const int maxn=333;
int n;
int parent[maxn];
void UFSet()
{
for(int i=0;i<=n;i++)
parent[i]=-1;
}
int find(int x)
{
int s=x;
while(parent[s]>0)
s=parent[s];
int tmp;
while(s!=x)
{
tmp=parent[x];
parent[x]=s;
x=tmp;
}
return s;
}
void Union(int x,int y)
{
int xx,yy,tmp;
xx=find(x);
yy=find(y);
if(xx!=yy)
{
tmp=parent[xx]+parent[yy];
if(parent[xx]<parent[yy])
{
parent[yy]=x;
parent[xx]=tmp;
}
else
{
parent[xx]=y;
parent[yy]=tmp;
}
}
}
并查集
最新推荐文章于 2024-06-15 13:49:08 发布