Cod sursa(job #2806072)

Utilizator NSA-16Neacsu-Tranciuc Sasa-Andrei NSA-16 Data 22 noiembrie 2021 12:17:43
Problema Paduri de multimi disjuncte Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.86 kb
def Disjuncte(file, file2):
    f = open(file, "r")
    g = open(file2, "w")
    n, m = [int(n) for n in f.readline().split()]
    L = []
    for i in range(m):
      L.append([int(n) for n in f.readline().split()])
    h = (n+1)*[0]
    tata = (n+1)*[0]
    def Reprezentare(u):
        while tata[u] != 0:
            u = tata[u]
        return u
    def Reuniune(u, v):
        ru, rv = Reprezentare(u), Reprezentare(v)
        if h[ru] > h[rv]:
            tata[rv] = ru
        else:
            tata[ru] = rv
            if h[ru] == h[rv]:
                h[rv] += 1
    for i in L:
        c, u, v = i
        if c == 1:
            Reuniune(u, v)
        else:
            if Reprezentare(u) != Reprezentare(v):
                g.write("NU" + "\n")
            else:
                g.write("DA" + "\n")
Disjuncte("disjoint.in", "disjoint.out")