Union-Find

Basic implementation

class UnionFind:
    def __init__(self):
        self.p = {}

    def find(self, u):
        if self.p[u] != u:
            self.p[u] = self.find(self.p[u])
        return self.p[u]

    def union(self, u, v):
        self.p.setdefault(u, u)
        self.p.setdefault(v, v)
        self.p[self.find(u)] = self.find(v)

Cited by 7