并查集基础
2012-06-17 20:28
204 查看
并查集是一种树型的数据结构,用于处理一些不相交集合的合并问题
并查集的主要操作有:
1-合并两个不相交集合
2-判断两个元素是否属于同一个集合
3-路径压缩
并查集的两种优化方法:路径压缩与按秩合并。
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1856
题意:给m个集合,求元素最多的那个集合的元素个数。
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1272
题意:给定点集,判断形成它们形成的图是否无环且连通。
分析:先把所有的点的父亲节点指向自己,然后用并查集合并,每次把合并的两个点标记为访问过的,如果中间出现要合并的两个节点的根节点都相同,说明有环,如果最后在访问过的节点中有大于1个节点的父亲节点还是自己,说明不连通。
题目:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=212
题意:求一个元素所在的集合的所有元素的个数。
分析:直接合并即可。
并查集的主要操作有:
1-合并两个不相交集合
2-判断两个元素是否属于同一个集合
3-路径压缩
并查集的两种优化方法:路径压缩与按秩合并。
int pre ,rank ; //pre[]为前驱,rank[]为当前元素所在集合的大小 //初始化 void Init() { for(int i=0; i<N; i++) { pre[i] = i; rank[i] = 1; } } //带路径压缩的非递归找根节点 int Find(int x) { int r = x; while(r != pre[r]) r = pre[r]; int i = x, j; while(i != r) { j = pre[i]; pre[i] = r; i = j; } return r; } //带路径压缩的递归找根节点 int Find(int x) { if(pre[x] != x) pre[x] = Find(pre[x]); return pre[x]; } //按秩合并,元素少的集合的根节点指向元素多的集合的根节点 void Union(int x,int y) { x = Find(x); y = Find(y); if(x == y) return; if(rank[x] >= rank[y]) { pre[y] = x; rank[x] += rank[y]; } else { pre[x] = y; rank[y] += rank[x]; } }
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1856
题意:给m个集合,求元素最多的那个集合的元素个数。
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1272
题意:给定点集,判断形成它们形成的图是否无环且连通。
分析:先把所有的点的父亲节点指向自己,然后用并查集合并,每次把合并的两个点标记为访问过的,如果中间出现要合并的两个节点的根节点都相同,说明有环,如果最后在访问过的节点中有大于1个节点的父亲节点还是自己,说明不连通。
题目:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=212
题意:求一个元素所在的集合的所有元素的个数。
分析:直接合并即可。
相关文章推荐
- poj 1308 is it a tree?(图的性质||基础并查集) (同hdu 1272 小希的迷宫 )
- hdu1102 Constructing Roads 基础最小生成树(并查集)
- poj2524_并查集基础
- 图论基础之并查集的简单看法:HDU 1232 畅通工程&&More is better
- HDU 1232 畅通工程 __ 基础并查集
- Vijos P1034家族 并查集基础
- AOJ 2170 Marked Ancestor (基础并查集)
- poj2236 Wireless Network(基础并查集)
- hdu1232(基础并查集)
- Vijos P1034家族【基础并查集】
- POJ 1127 基础计算几何(判断两线段相交)+并查集
- poj2524——Ubiquitous Religions【并查集基础】
- poj Wireless Network(基础并查集)
- 基础的并查集
- hdu1856(基础并查集)
- hihocoder 1066 无间道(基础并查集)
- 2017/7/31训练日记(并查集基础)
- poj1703 Find them, Catch them 基础并查集问题
- 基础并查集poj2236
- 并查集基础