本文最后更新于 806 天前,其中的信息可能已经有所发展或是发生改变。
int pre[N];
//递归方式
int find_1(int x)
{
if(pre[x]!=x) pre[x]=find(pre[x]);
return pre[x];
}
//非递归方式
int find_2(int x)
{
if(pre[x]!=x)
while(pre[x]!=pre[pre[x]])
pre[x]=pre[pre[x]];
return pre[x];
}
void merge(int x,int y)
{
pre[find(x)]=find(y);
}
void init(int n)
{
for(int i=1;i<=n;i++) pre[i]=i;
}