在并查集中有两个重要的函数 一个是 find函数
void find(int x)
{
int r=x;
while(pre[r]!=r)
{
r=pre[r];
}
return r;//寻找到上级停止
}
另一个是join 函数
void join(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
{
pre[fx]=fy;
}
}
另一个用来缩短时间的函数 名为路径压缩函数
这个函数一般写在find函数之内
void find(int x)
{
int r=x;
while(pre[r]!=r)
{
r=pre[r];
}
//到while的函数体出来之后已经找到了 x 的上级
// 路径压缩
int i=x,j;
while(i!=r)
{
j=pre[i];
pre[i]=r;
i=r;
}
// return r;//寻找到上级停止
}