Cod sursa(job #2954946)

Utilizator Narcis2151Fanica Narcis Narcis2151 Data 15 decembrie 2022 20:38:39
Problema Paduri de multimi disjuncte Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.88 kb
import numpy as np
fin = open("disjoint.in", "r")
fout = open("disjoint.out", "w")

nm = fin.readline().split()
n, m = int(nm[0]), int(nm[1])
tata = np.array([0 for i in range(100001)])
h = np.array([0 for i in range(100001)])


def Reprez(u):
    if tata[u] == u:
        return u
   
    return Reprez(tata[u])

def Reuneste(u, v):
    ru = Reprez(u)
    rv = Reprez(v)

    if h[ru] > h[rv]:
        tata[rv] = ru
    else:
        tata[ru] = rv
        if h[ru] == h[rv]:
            h[rv] = h[rv] + 1

for i in range(m):
    cuv = fin.readline().split()
    #print(cuv)
    c, u, v = int(cuv[0]), int(cuv[1]), int(cuv[2])
    #print(c,u,v)
    if c == 2:
        if Reprez(u) == Reprez(v):
            fout.write("DA\n")
        else:
            fout.write("NU\n")
    else:
            Reuneste(u,v)
            
#print(tata,h)
fin.close()
fout.close()