Pagini recente » Cod sursa (job #2426546) | Cod sursa (job #2088814) | Cod sursa (job #767175) | Cod sursa (job #170271) | Cod sursa (job #2946500)
def find(p):
if (parent[p] == -1):
return p
parent[p] = find(parent[p])
return parent[p]
f = open("disjoint.in", 'r')
n, m = (int(x) for x in f.readline().split(" "))
parent = [-1 for i in range(n + 1)]
rank = [0 for i in range(n+1)]
for linie in f:
z = int(linie[0])
x = int(linie[2])
y = int(linie[4])
absx = 0
absy = 0
if z == 1: #union
absx = find(x)
if parent[x] != -1:
parent[x] = absx
absy = find(y)
if parent[y] != -1:
parent[y] = absy
if rank[absx] == rank[absy]:
parent[absx] = absy
rank[absy] = rank[absy] + 1
else:
if rank[absx] < rank[absy]:
parent[absx] = absy
rank[absy] = rank[absy] + 1
else:
parent[absy] = absx
rank[absx] = rank[absx] + 1
else: #verificare daca sunt in aceeasi multime
if(find(x) == find(y)):
print("DA")
else:
print("NU")