Pagini recente » Cod sursa (job #2588892) | Cod sursa (job #870060) | Cod sursa (job #2497611) | Cod sursa (job #867957) | Cod sursa (job #3317551)
parent = []
sz = []
def find(v):
while v != parent[v]:
v = parent[v]
return v
def union(x, y):
x = find(x)
y = find(y)
# Add check to avoid union if already in same set
if x == y:
return
if sz[x] < sz[y]:
parent[x] = y
sz[y] += sz[x]
else:
parent[y] = x
sz[x] += sz[y]
def main():
global parent, sz
results = []
# Fix file reading
with open("disjoint.in", "r") as f:
n, m = map(int, f.readline().split())
for i in range(n):
parent.append(i)
sz.append(1)
for _ in range(m):
# Read from file, not input()
cmd, a, b = map(int, f.readline().split())
if cmd == 1:
union(a - 1, b - 1)
else:
if find(a - 1) == find(b - 1):
results.append("DA")
else:
results.append("NU")
with open("disjoint.out", "w") as out:
for res in results:
out.write(res + "\n")
main()