gumgum's Garden🌼

Make network connected

def makeConnected(n, connections):
    
    if len(connections) < n - 1:
        return -1
    
    parent = [i for i in range(n)]
    
    def find(v, parent):
        if parent[v] == v:
            return v
        p = find(parent[v], parent)
        parent[v] = p
        return p
    
    def union(u, v, parent):
        pu = find(u, parent)
        pv = find(v, parent)
        
        if pu == pv:
            return
        else:
            parent[pu] = pv
    
    for u, v in connections:
        union(u, v, parent)
    
    components = 0
    
    for i in range(n):
        if parent[i] == i:
            components += 1
    
    return components - 1