Pagini recente » Cod sursa (job #1749443) | Cod sursa (job #412431) | Cod sursa (job #3125938) | Cod sursa (job #2671218) | Cod sursa (job #2449564)
#!/usr/bin/env python3
import sys
sys.stdout = open('disjoint.out', 'w')
with open('disjoint.in', 'r') as f:
readInts = lambda: tuple(map(int, f.readline().split()))
N, M = readInts()
P, RNK = list(range(N)), [1] * N
def find(a):
root = a
while P[root] != root:
root = P[root]
while a != root:
a, P[a] = P[a], root
return root
def unite(a, b):
if RNK[a] > RNK[b]:
P[b] = P[a]
else:
P[a] = P[b]
if RNK[a] == RNK[b]:
RNK[b] += 1
for _ in range(M):
op, a, b = readInts()
a, b = a - 1, b - 1
if op == 1:
unite(a, b)
else:
print('DA' if find(a) == find(b) else 'NU')