POJ 1611 The Suspects(并查集)
2016-03-01 17:02
351 查看
Description
有n名学生(编号0~n-1)分成了m组,其中学生0感染了病毒,这种病毒极易传播,两人只要接触就会传播,一人感染全组感染,问共有多少名学生会感染这种病毒?
Input
多组用例,每组用例第一行为两个整数n和m表示学生人数和组数,之后m行每行首先输入该组学生人数num,然后输入num个整数表示该组学生的编号,以 0 0结束输入
Output
对于每组用例,输出被感染学生的数量
Sample Input
100 4
2 1 2
5 10 13 11 12 14
2 0 1
2 99 2
200 2
1 5
5 1 2 3 4 5
1 0
0 0
Sample Output
4
1
1
Solution
并查集,用num[i]表示每个集合的元素数量,在合并过程中加上num的累加过程,最后答案即为num[find(0)]
Code
有n名学生(编号0~n-1)分成了m组,其中学生0感染了病毒,这种病毒极易传播,两人只要接触就会传播,一人感染全组感染,问共有多少名学生会感染这种病毒?
Input
多组用例,每组用例第一行为两个整数n和m表示学生人数和组数,之后m行每行首先输入该组学生人数num,然后输入num个整数表示该组学生的编号,以 0 0结束输入
Output
对于每组用例,输出被感染学生的数量
Sample Input
100 4
2 1 2
5 10 13 11 12 14
2 0 1
2 99 2
200 2
1 5
5 1 2 3 4 5
1 0
0 0
Sample Output
4
1
1
Solution
并查集,用num[i]表示每个集合的元素数量,在合并过程中加上num的累加过程,最后答案即为num[find(0)]
Code
#include<cstdio> #include<iostream> #include<cstring> using namespace std; #define maxn 33333 int fa[maxn]; int deep[maxn]; int num[maxn]; void init(int n) { for(int i=0;i<=n;i++) { fa[i]=i; deep[i]=0; num[i]=1; } } int find(int x) { if(fa[x]==x) return x; else return fa[x]=find(fa[x]); } void unite(int x,int y) { x=find(x); y=find(y); if(x==y) return; if(deep[x]<deep[y]) fa[x]=y,num[y]+=num[x]; else { fa[y]=x,num[x]+=num[y]; if(deep[x]==deep[y]) deep[x]++; } } int main() { int n,m; while(~scanf("%d%d",&n,&m),n||m) { init(n); for(int i=0;i<m;i++) { int cnt,pre,last; scanf("%d",&cnt); if(cnt)scanf("%d",&pre); if(cnt>1) for(int j=1;j<cnt;j++) { scanf("%d",&last); unite(pre,last); pre=last; } } printf("%d\n",num[find(0)]); } return 0; }
相关文章推荐
- 设置navigationBar的全透明,但是push到其他页面后,页面也变成了全透明,
- UITableView使用注意事项(unable to dequeue a cell with identifier)
- iOS 数据处理
- UIViewAnimationCurve 知识点
- MVC 包命名规范
- linux ---pgbouncer的安装和配置
- 哈理工oj 1631 技能修炼【拓扑排序】
- listView和ScroolView共同作用,导致ListView默认显示一行
- LLBL Gen Pro 3.X 下使用 Template 模版绑定(一)
- c语言:对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。
- windows server 2008解决 远程桌面多帐号同时登录
- 我的软件工程目标
- 逻辑斯蒂回归3 -- 最大熵模型之改进的迭代尺度法(IIS)
- Linux下locate命令和find命令
- 一个很好的c++指针面试题 想当年我只对了一个,现在回头看,还是错的一塌糊涂
- php回调函数
- sxgq的项目
- JS拖动浮动DIV
- 老李分享:持续集成学好jenkins之解答疑问
- 自我介绍