int father[10005];//存父节点
void initialize(int n)
{
for(int i=1;i<=n;i++)
{
father[i]=i//初始化,所有节点的父节点指向自己
}
}
int get(int x)//返回根节点
{
if(x==father[x])//根节点的父节点为自身
{
return x;//返回
}
return father[x]=get(father[x]);//否则把向上寻找根节点途中遇到的所有节点,的父节点指向更高一级
}
void merge(int x,int y)
{
father[get(x)]=get(y);//合并,等价于让x的根节点作为y根节点的子节点
}