并查集
来源:互联网 发布:手机报警软件 编辑:程序博客网 时间:2024/06/07 09:33
find()函数可以找到根节点,就是几个元素绑定在一起,找到第一个绑定的点
join()找到根节点,改变根节点,为了绑定更多元素
并查集好像用来将一堆数分为一组一组数
#include<stdio.h>
int sum=0;int a[30005]={0};int find(int b){ int p=b,i=b,j; while(a[p]!=p) { p=a[p]; } while(i!=p) { j=a[i]; a[i]=p; i=j; } return p;}int join(int b,int c){ int i=find(b); int j=find(c); if(i==j) return 0; else{ a[i]=a[j]; } return 1;}int main(){ int n,m; int i,j,k; int arr[30005]={0}; while(~scanf("%d %d",&n,&m)) { if(n==0&&m==0) break; sum=1; for(i=0;i<n;++i) { a[i]=i; } for(i=0;i<m;++i) { if(m==0) break; scanf("%d",&k); for(j=0;j<k;++j) { scanf("%d",&arr[j]); } if(k>1){ for(j=1;j<k;++j) { join(arr[j],arr[j-1]); } } } for(i=0;i<n;++i) { find(i); } if(n==1) printf("1\n"); else{ for(i=1;i<n;++i) { if(a[i]==a[0]) sum++; } printf("%d\n",sum); } } return 0;}
0 0
- HDU3938 并查集 并查集
- 并查集(集并查)
- HDU1232 并查集<并>
- 并查集
- 数据结构-并查集
- 并查集
- 并查集!
- 并查集
- 并查集
- 并查集
- 并查集
- 并查集总结
- 并查集学习
- 并查集
- 并查集
- 并查集
- 所谓并查集
- 并查集
- JSP内置对象
- strlen
- mysql导入文件报错,failed to open file 'file_name'
- 谈一谈软件开发过程中的优化心得
- 字符串面试指南
- 并查集
- jsp中文乱码
- 判断各种浏览器的内核和 移动端的类型
- 字符串5:词语变形练习题
- Android 防止你的Activity 不能被销毁
- ACM知识点、比赛总结
- 392. Is Subsequence
- [Push]百度消息推送的应用
- STM32设置时钟