并查集模板
2012-12-31 12:48
190 查看
#include<stdio.h> typedef struct { int rank; //节点对应的秩 int parent; //双亲节点,即所属的集合 }UFSTree; /** 初始化集合,使每个节点双亲都指向自己 n为节点的个数 */ void MakeSet(UFSTree t[],int n) { for(int i=0;i<n;i++) { t[i].parent = i; t[i].rank = 0; } } /** 递归的查找节点的双亲(即所需集合),x为待查找的节点*/ int FindSet(UFSTree t[],int x) { if (x!=t[x].parent) return FindSet(t,t[x].parent); return x; } /**合并两个节点所在的集合,x和y分别为所在两个集合*/ void Union(UFSTree t[],int x,int y) { x = FindSet(t,x); //首先找到x和y节点所在的集合的编号 y = FindSet(t,y); if (t[x].rank>t[y].rank) t[y].parent = x; //y所在的集合的秩小于x所在集合的秩,将y的集合并入x中 else { t[x].parent = y; if (t[x].rank==t[y].rank) //若x和y的秩相同,y的秩加1 t[y].rank++; } }
相关文章推荐
- 并查集 模板
- ACM_模板_并查集
- 并查集模板[路径压缩]
- 并查集模板
- 贴一个并查集的模板吧
- poj 1182 食物链(并查集)(并查集模板)
- Union-Find Set 并查集 详解 [基本模板]
- 并查集(模板) 洛谷3367
- gw_Disjoint Set (并查集) 模板及拓展应用
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
- PAT甲题题解-1114. Family Property (25)-(并查集模板题)
- kruskal_并查集_代码模板 &hdu1232
- hdoj 1213 How Many Tables 并查集模板
- 并查集 模板
- hdu 1213 How Many Tables 并查集模板题+路径压缩
- 最小生成树Kruskal算法【模板】 与 并查集 例题:简单 poj 2485 Highways
- HDU-1213-How Many Tables(并查集模板题)
- 并查集模板
- 并查集模板
- 并查集模板