并查集模板

并查集学习可查看网站

class Djset {
public:
    vector<int> parent;  // 记录节点的根
    vector<int> rank;  // 记录根节点的深度(用于优化)
    Djset(int n): parent(vector<int>(n)), rank(vector<int>(n)) {
        for (int i = 0; i < n; i++) {
            parent[i] = i;
        }
    }

    int find(int x) {
        if (x != parent[x]) {
            parent[x] = find(parent[x]);
        }
        return parent[x];
    }

    bool merge(int x, int y) {
        int rootx = find(x);
        int rooty = find(y);
        if (rootx != rooty) {
            if (rank[rootx] < rank[rooty]) {
                swap(rootx, rooty);
            }
            parent[rooty] = rootx;
            if (rank[rootx] == rank[rooty]) rank[rootx] += 1;
            return false; // 根节点不同,返回false
        }
        // 根节点相同,返回true
        return true;
    }
};

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 并查集详解 ——图文解说,简单易懂(转)https://blog.csdn.net/liujian20150808...
    yunfeichen119阅读 180评论 0 0
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 13,878评论 2 59
  • 问题介绍:并查集一般用来解决连通性方面的问题,最典型的比如图的连通性,与邻接表配合最佳连通这个概念抽象出来的特点是...
    FF_b0bf阅读 909评论 0 2
  • 以PAT甲级1114为例,写了个并查集模板,记录下来。题目就不列了,感兴趣去官网找一下
    MambaHJ阅读 238评论 0 1
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,787评论 16 22

友情链接更多精彩内容