Cod sursa(job #3317546)

Utilizator h4rap-a1bMihail Cosor h4rap-a1b Data 24 octombrie 2025 14:19:53
Problema Paduri de multimi disjuncte Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.78 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)

    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

    input = open("disjoint.in").readline
    out = open("disjoint.out", "w")

    n, m = map(int, input().split())
    
    for i in range(n):
        parent.append(i)
        sz.append(1)

    for _ in range(m):
        cmd, a, b = map(int, input().split())
        if cmd == 1:
            union(a - 1, b - 1)
        else:
            if find(a - 1) == find(b - 1):
                out.write("DA\n")
            else:
                out.write("NU\n")

    input.close()
    out.close()

main()