时间: 2020-11-21|43次围观|0 条评论

并查集:(union-find sets)是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多。它支持以下两种操作:
  -merge (Root1, Root2) //并操作;把子集合Root2并入集合Root1中.要求:Root1和 Root2互不相交,否则不执行操作.
  -Find (x) //搜索操作;搜索单元素x所在的集合,并返回该集合的名字.
每个集合用一棵“有根树”表示
定义数组 set[1..n]
set[i] = i , 则i表示本集合,并是集合对应树的根
set[i] = j, j<>i, 则 j 是 i 的父节点.

 

并查集简介及模板插图
并查集简介及模板插图1
Code

const int Max=1000;
int set[Max];
//初始化 for(i=0;i<Max;i++) set[i]=i;
int find(int x)//查找
{
    
int i=x,r=x,j;
    
while(set[r]!=r)
        r
=set[r];
    
while(i!=r)    //路径压缩
    {
        j
=set[i];
        
set[i]=r;
        i
=j;
    }
    
return r;
}
void merge(int a,int b)//归并
{
    
int x,y;
    x
=find(a);
    y
=find(b);
    
if(x!=y)
        
set[x]=y;
}

转载于:https://www.cnblogs.com/wuying/archive/2008/08/14/1267868.html

原文链接:https://blog.csdn.net/weixin_30342827/article/details/97249614

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《并查集简介及模板
   

还没有人抢沙发呢~