Pagini recente » Cod sursa (job #846278) | Cod sursa (job #236227) | Cod sursa (job #2653536) | Cod sursa (job #2876494) | Cod sursa (job #2946493)
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)
absy = find(y)
if rank[x] == rank[y]:
parent[x] = y
rank[y] = rank[y] + 1
else:
if rank[x] < rank[y]:
parent[x] = y
rank[y] = rank[y] + 1
else:
parent[y] = x
rank[x] = rank[x] + 1
else: #verificare daca sunt in aceeasi multime
if(find(x) == find(y)):
print("DA")
else:
print("NU")