最近在学可持久化数据结构,看了看可持久化并查集,无奈本人很菜,只会路径压缩实现并查集,不会其他方法,但是可持久化并查集用路径压缩会炸内存,所以我们需要用到按秩合并的方法去维护树形集合
按秩合并的特点,秩低的向秩高的进行合并
看下代码:
int findx(int x)
{
if(x!=pre[x])
{
pre[x]=findx(pre[x]);
}
return pre[x];
}
void mere(int x,int y)
{
x=findx(x);
y=findx(y);
if(x==y)
return;
if(Rank[x]<Rank[y])
{
pre[x]=y;
}
else
{
if(Rank[x]==Rank[y])
Rank[x]++;
pre[y]=x;
}
}