并查集

并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。

初始化:

for(int i=0;i<n;i++){
     p[i]=i;//每个点单独为一个集合(自己是自己的爸爸)
}


查:

int find (int x) { 
        return x == p[x]  ?  x: p[x] = find(x) ;//搜索直到找到根节点(祖宗)
}

 

并:

void unity(int x,int y){
          x=find(x); y=find(y);
          p[x]=y;//x的根节点(祖宗)变成y根节点(祖宗)的儿子
}


 

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务