并查集路径压缩递归写法:
int find(int x)
{
return pa[x]==x? x:find(pa[x]);
}
有时候数据太大会因为递归层数太多而RE,那么此时可以选择以下非递归版本。
并查集路径压缩非递归写法:
int find(int x)
{
if(pa[x]==x)
return x;
int r=x;
while(pa[x]!=r)
{
r=pa[x];
pa[x]=pa[r];
}
return pa[x];
}