主要有三个函数:
void UFset()//初始化
{
for(int i=0;i<N;i++)
{
parent[i]=-1;
}
}
int find(int x)//返回X节点所属集合的根节点
{
for(int i=x;parent[i]>=0;i=parent[i]);
while(i!=x)//优化方案--压缩路径
{
int tmp=parent[x];
parent[x]=i;
x=tmp;
}
return i;
}
void Union(int R1,int R2)//将两个不同集合的元/////////素进行合并,使两个集合中任两个元素都连通
{
int tmp=parent[R1]+parent[R2];
if(parent[R1]>parent[R2])//优化方案――加权法则
{
parent[R1]=R2;
parent[R2]=tmp;
}
else
{
parent[R2]=R1;
parent[R1]=tmp;
}
}