Cod sursa(job #3317551)

Utilizator h4rap-a1bMihail Cosor h4rap-a1b Data 24 octombrie 2025 14:23:41
Problema Paduri de multimi disjuncte Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 1.04 kb
parent = []
sz = []

def find(v):
    while v != parent[v]:
        v = parent[v]
    return v

def union(x, y):
    x = find(x)
    y = find(y)
    
    # Add check to avoid union if already in same set
    if x == y:
        return

    if sz[x] < sz[y]:
        parent[x] = y
        sz[y] += sz[x]

    else:
        parent[y] = x
        sz[x] += sz[y]

def main():
    global parent, sz
    results = []

    # Fix file reading
    with open("disjoint.in", "r") as f:
        n, m = map(int, f.readline().split())

        for i in range(n):
            parent.append(i)
            sz.append(1)

        for _ in range(m):
            # Read from file, not input()
            cmd, a, b = map(int, f.readline().split())
            if cmd == 1:
                union(a - 1, b - 1)
            else:
                if find(a - 1) == find(b - 1):
                    results.append("DA")
                else:
                    results.append("NU")

    with open("disjoint.out", "w") as out:
        for res in results:
            out.write(res + "\n")

main()