360笔试编程题 找老乡(BFS解法)
2015-09-30 11:10
477 查看
题目:大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否与自己同乡。来自新疆的小鲵尤其热衷。但是大家都不告诉小尼他们来自哪里,只是说与谁同乡。从所给的信息中,你能告诉小尼有多少人确定是她的同乡么?
输入:每个测试实例首先包括两个整数,N(1 = < N < = 1000),M(0 = < M < = N*(N-1)/2),代表现在有N个人(用1~N编号)和M组关系;
在接下来的M行里,每行包括两个整数,a,b,代表a跟b是同乡;
当N=0,M=0输入结束;
已知1表示小尼本人。
输出: 对于每个测试实例,输出一个整数,代表确定是小尼同乡的人数。
方法:两种方法,图的遍历和并查集,本文为BFS解法。
代码:图的遍历
测试结果
输入:每个测试实例首先包括两个整数,N(1 = < N < = 1000),M(0 = < M < = N*(N-1)/2),代表现在有N个人(用1~N编号)和M组关系;
在接下来的M行里,每行包括两个整数,a,b,代表a跟b是同乡;
当N=0,M=0输入结束;
已知1表示小尼本人。
输出: 对于每个测试实例,输出一个整数,代表确定是小尼同乡的人数。
方法:两种方法,图的遍历和并查集,本文为BFS解法。
代码:图的遍历
#include <iostream> #include <vector> #include <string> #include <set> #include <deque> #include <stdlib.h> using namespace std; int main(int argc, char *argv[]) { int num, relation; vector<int> result; while (cin >> num >> relation) { if (num == 0 && relation == 0) break; int * table = (int *)malloc(num*num * 4); memset(table, 0, num*num * 4); int fir, sec; for (int i = 0; i < relation; ++i) { cin >> fir >> sec; table[(fir - 1)*num + sec - 1] = 1; table[(sec - 1)*num + fir - 1] = 1; } deque<int> ideque; set<int> iset; for (int i = 0; i < num; ++i) { if (table[i] == 1) { ideque.push_back(i); iset.insert(i); } } if (ideque.size() == 0) { result.push_back(0); continue; } bool* HasSearch = new bool[num]; memset(HasSearch, 0, num); HasSearch[0] = true; while (!ideque.empty()) { int temp = ideque.front(); ideque.pop_front(); for (int i = 0; i < num; ++i) { if (table[temp*num + i] && !HasSearch[i]) { ideque.push_back(i); iset.insert(i); } } HasSearch[temp] = true; } result.push_back(iset.size()); free(table); free(HasSearch); } for (int i = 0; i < result.size(); ++i) cout << result[i] << endl; return 0; }
测试结果
相关文章推荐
- Spring4 MVC json问题(406 Not Acceptable)
- C++ primer 第四版 目录(仅供参考)
- 黑马程序员—C语言结构体知识梳理
- spring----contextConfigLocation
- Java DFA算法实现敏感词过滤
- 初试VS2015提供的Python Django模版
- C++学习-文本输入输出
- java并发编程学习:如何等待多个线程执行完成后再继续后续处理(synchronized、join、FutureTask、CyclicBarrier)
- ThinkPHP中field 方法与getField 方法的区别。
- php 5.3 以上版本连接SQLServer
- java08:成绩管理系统
- CocoaPods pod install/ pod update( 安装/更新代码库)超级慢问题
- Java抽象类和接口的区别
- PHP如何匹配反斜杠\
- Codeforces Round #322 D Three Logos
- java实例变量初始化
- 2015/9/29 Python基础(20):类的授权
- Protobuf在Java中的使用
- c# 生成二维码
- Java制作证书的工具keytool用法总结