poj1611 带权并查集
2015-09-07 14:41
169 查看
题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染。
带权并查集,给每个集合加入这个集合的总人数,合并集合是一起合并就可以了。
View Code
带权并查集,给每个集合加入这个集合的总人数,合并集合是一起合并就可以了。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,fa[30005],num[30005]; void init(){ for(int i=0;i<n;i++){fa[i]=i;num[i]=1;} } int find(int x){ int r=x,t; while(fa[r]!=r)r=fa[r]; while(x!=r){ t=fa[x]; fa[x]=r; x=t; } return r; } int main(){ int m; while(scanf("%d%d",&n,&m)!=EOF&&(n!=0||m!=0)){ init(); int i,j; for(i=1;i<=m;i++){ int t,a,b; cin>>t; for(j=1;j<=t;j++){ cin>>a; if(j==1)b=a; else{ int x=find(a),y=find(b); if(x!=y){ fa[x]=y; num[y]+=num[x]; } } } } int x=find(0); printf("%d\n",num[x]); } return 0; }
View Code
相关文章推荐
- easyui 表单验证validatetype——支持自定义验证
- xml designe 在底部放置一个Button
- mongodb参数
- 封装好的Android对话框Dialog,包含了丰富的dialog样式、点击事件数据回传接口。直接调用封装好的方法即可操作dialog
- 初探swift语言的学习笔记八(保留了许多OC的实现)
- TreeList<中>
- PHPExcel类实用的方法总结
- Unity3D教程:动画合成教程(Animation Blending)
- 怎么在THINKPHP中引入PHP文件
- 让spring的配置文件可以使用外部properties里的参数。
- pip 安装 MySQL-python 失败
- Unity下Android利用Ant构建打包
- Android基础入门教程——7.1.2 Android Http请求头与响应头的学习
- 微信开发之图灵机器人 e19a
- 2016校招腾讯研发岗笔试题(第一题)
- 初探swift语言的学习笔记七(swift 的关健词)
- 一个网页通用的测试用例(借鉴他人的保存,加注释)
- 一些笔试中会出现的题目
- 调试模式下的日志打印
- UINavigationController导航条是否挡住下面的内容