要完成一个并查集首先得定义一个数组来储存双亲,(记得确认数组长度符合题目),然后得写一个查找该树的树根函数:
int find(int x)
{
if(x==p[x])
return x;
else
return p[x]=find(p[x]);
}
这里用到了递归;
随后在主函数中进行初始化;
如:p[i]=i;
最后将并查集合并起来即可;
for(int i=1;i<=e;i++){
cin>>x>>y;
p[find(x)]=find(y);
}
在这里的后面内容就是根据题目来进行的了;
想看列题的可以看看其他文章;
详情见文:两个顶点之间是否存在路径;