并查集(UnionFind)模板 python代码

并查集的知识点可以看:算法学习笔记(1) : 并查集 - 知乎 (zhihu.com)

下面是自己实现的python版并查集模板

"""
描述:并查集(UnionFind)模板 pyhon代码
创建日期:2021/2/15
更新日期:2021/8/17
"""


class UnionFind:
    def init(self, items):
        fa, rank = {
    
    }, {
    
    }
        for i in items:
            fa[i] = i
            rank[i] = 1

    def find(self, fa, i):
        # 查找 & 路径压缩
        if fa[i] != i:
            fa[i] = self.find(fa, fa[i])
        return fa[i]

    def merge(self, fa, rank, i, j):
        # 按秩合并
        fa_i, fa_j = self.find(fa, i), self.find(fa, j)
        if rank[fa_i] < rank[fa_j]:
            fa[fa_i] = fa[fa_j]
        else:
            fa[fa_j] = fa[fa_i]
        if rank[fa_i] == rank[fa_j] and fa_i != fa_j:
            rank[fa_i] += 1

上次修改:2021-08-17

猜你喜欢

转载自blog.csdn.net/weixin_45850137/article/details/113815714