跪求大牛用C++实现并查集的三个常用基本操作!!!急求!!!

2024-12-01 11:19:32
推荐回答(1个)
回答1:

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根节点的子节点 
}