数据结构用结构体实现并查集

Posted jiangyuechen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构用结构体实现并查集相关的知识,希望对你有一定的参考价值。

struct union_find_set
{
    int father[MAXN];//每个元素的祖先
    union_find_set(int limit)//构造函数,对于每一个元素,其父亲初始化为它本身
    {
        for(int i=1;i<=limit;i++)
        {
            father[i]=i;
        }
    }
    int find(int x)//找寻操作,使用路径压缩优化
    {
        if(father[x]!=x) father[x]=find(father[x]);
        return father[x];
    }
    void unite(int a,int b)//合并操作,实质是将一个集合的共同父亲赋值为另一个集合
    {
        father[b]=a;
    }
    bool isSameSet(int a,int b)//判断是否在同一个集合里
    {
        return (find(a)==find(b));//只要两个元素的祖先相同就可以
    }
};

 

以上是关于数据结构用结构体实现并查集的主要内容,如果未能解决你的问题,请参考以下文章

最小生成树模板+并查集(隐藏)+结构体排序模板

数据结构 ---[实现并查集(UnionFind)]

想要学会并查集吗?看我四十行代码实现它

kruskal:最小生成树

数据结构——并查集

并查集的原理及实现