代码1: par [ i ] 初始化为 i
//查找根,并压缩路径
int get_par(int ){
if(par[a]!=a)
par[a]=get_par(par[a]);
return par[a];
}
//合并
void merge(int a,int b){
par[get_par(a)]=get_par(b);
}
-------------------------------------------------------------------------------------------------------------------------
代码2: set [ i ] 初始化为 -1
//查找根,并压缩路径
int set_find(int d)
{
if(set[d]<0)
return d;
return set[d]=set_find(set[d]);
}
//合并
void join(int x,int y)
{
x=set_find(x);
y=set_find(y);
set[x]=y;
}