并查集_ 模板
来源:互联网 发布:xbox你的网络尚未设置 编辑:程序博客网 时间:2024/05/22 00:23
并查集的实现(复杂度:比O(log(n))还要快的阿克曼函数的反函数的数量级,接近于O(1))
编号代表每个元素,数组par表示的是父亲的编号,par[x]=x时,x是所在的树的根
int par[MAX_N];///父亲
int high[MAX_N];///树的高度
///初始化n个元素
void init(int n)
{
for(int i=0; i<n; i++)
{
par[i]=i;
high[i]=0;
}
}
///查询树的根(递归写法)
int Find(int x)
{
return (par[x]==x)?x:Find(par[x]);
}
///非递归写法
int Find(int x)
{
int r=x;
while(r!=par[r]) ///找根r
r=par[r];
int t=x;
while(t!=r) ///将x到r路径上的点的父节点均置为根r
{
int m=par[t];
par[t]=r;
r=m;
}
return r;
}
///合并x和y所属的集合
void unite(int x,int y)
{
x=Find(x);
y=Find(y);
if(x==y) return ;
if(high[x]<high[y]) par[x]=y;
else
{
par[y]=x;
if(high[x]==high[y]) high[x]++;
}
}
///判断x和y是否属于同一个集合
bool same(int x,int y)
{
return Find(x)==Find(y);
}
- 并查集_ 模板
- ACM_模板_并查集
- kruskal_并查集_代码模板 &hdu1232
- 并查集模板
- 并查集模板
- 并查集模板
- 并查集模板
- 【模板】并查集
- 并查集模板
- 并查集模板
- 并查集模板
- 并查集模板
- 并查集【模板】
- 并查集 模板
- 并查集模板
- 并查集模板
- 并查集模板
- 并查集模板
- VMware下对Ubuntu进行扩充磁盘大小
- android中的存储问题
- 人工智能编程马拉松
- js中如何添加一个事件监听addEventListener
- 第九课,静态链表
- 并查集_ 模板
- 319Bulb Switcher
- CSS学习
- check_user.sh
- 使用Spring特性实现接口多实现类的动态调用
- android安卓根据地名查找经纬度(百度地图)
- bootstrap layer.open中end的使用
- 中文分词研究入门
- [IOS APP]尘埃落定-有声文学