Calculum UdeM

📚 Aide-mémoire

Algorithmes de compétition - Calculum

Union-Find

n = 100

parent = [i for  i in range(n)]
size = [1 for _ in range(n)]


def find(a):
    if parent[a]==a:
        return a
    parent[a] = find(parent[a])
    return parent[a]
    
def union(a, b):
    a, b = find(a), find(b)
    b, a = sorted(
        [a, b],
        key=lambda x: size[x]
        )
    size[a] += size[b]
    size[b] = 0
    parent[b] = a