跪求大牛用C++实现并查集的三个常用基本操作!!!急求!!!
要求包含以下3个操作:(1)构造操作:将集合中的每一个元素初始为一个独立的不相交集合(等价类);(2)合并操作:把属于不同集合的两个元素各自所属的集合合并;(3)查找操作...
要求包含以下3个操作:(1) 构造操作:将集合中的每一个元素初始为一个独立的不相交集合(等价类);(2) 合并操作:把属于不同集合的两个元素各自所属的集合合并;(3) 查找操作:找出元素属于哪个子集。常用来确定两个元素是否属于同一子集。
展开
展开全部
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根节点的子节点
}
追问
能加多一个main函数吗,看一下怎么实现的,谢谢
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询