并查集(保存分组结果)
来源:互联网 发布:下载2345软件大全 编辑:程序博客网 时间:2024/05/22 01:53
//如果只是输出有多少个团伙,那么只要比较pre[i]==i即可,但是若要求将不同的组织分行打印出来,那么需要注意要再压缩一次路径,即再find()一次~
#include <stdio.h> int pre[101]; void merge(int b,int c); int find(int i); int main() { int i,m,n,c,d,sum,ok; scanf("%d%d",&n,&m); for (i=1;i<=n;i++) pre[i]=i; for (i=1;i<=m;i++) { scanf("%d%d",&c,&d); merge(c,d); } sum=0; for (i=1;i<=n;i++) if (pre[i]==i) sum++; printf("%d\n",sum); sum=1; for (i=1;i<=n;i++) find(i); while (sum<=n) { ok=0; for (i=1;i<=n;i++) if (pre[i]==sum) { ok=1; printf("%d ",i); } if (ok) printf("\n"); sum++; } return 0; } int find(int i) { int j=i,temp; while (pre[i]!=i) i=pre[i]; while (j!=i) { temp=pre[j];//先记录下下一个长官 pre[j]=i;//统一都更新为i的手下 j=temp;//迭代 } return i; } void merge(int b,int c) { int t1,t2; t1=find(b); t2=find(c); if (t1!=t2) pre[t2]=t1; return;}
0 0
- 并查集(保存分组结果)
- 分组 (并查集)
- 分组并查集(种类并查集)
- poj 1703(并查集分组)
- luogu3940:分组(并查集)
- 分组背包+并查集
- hdu1829 A Bug's Life (分组并查集)
- A Bug's Life (分组 并查集)
- CSU 1326: The contest(并查集+分组背包)
- poj2492-并查集基于分组
- 分组背包dp+并查集 vijos1250
- 分组并查集 hdu 1829
- Codeforces Round #383 (Div. 2)D-(并查集&分组背包)|(搜索&01背包)
- poj 1703 Find them, Catch them (分组并查集 偏移向量实现)
- HDU 1829 A Bug's Life (分组并查集)
- HDOJ 题目1829A Bug's Life(分组并查集)
- hdu 1829 A Bug's Life(分组并查集)
- A Bug's Life(分组并查集 奇偶表)
- 【甘道夫】HBase基本数据操作详解【完整版,绝对精品】
- ]获取android应用的MD5签名
- win7/8.1点击鼠标右键时候很慢迟迟才有反应的解决方法
- NGUI--SpringPanel总结
- TextView圆角
- 并查集(保存分组结果)
- Android Studio中获取sha1证书指纹数据的方法
- php的基础架构MVC
- 您的网站的内页就像是一个新的网站
- iOS开发 ----- vim相关以及常用shell命令
- ipc\$详细用法介绍
- Unity的光源类
- poj
- Xcode快捷键