Pagini recente » Cod sursa (job #2511287) | Cod sursa (job #1317039) | Cod sursa (job #1954454) | Monitorul de evaluare | Cod sursa (job #2955121)
class DisjointSet:
def __init__(self, n: int):
self.parent = [i for i in range(n)]
self.rank = [1 for _ in range(n)]
def find(self, a: int) -> int:
if self.parent[a] == a:
return a
self.parent[a] = self.find(self.parent[a])
return self.parent[a]
def union(self, a: int, b: int):
pa = self.find(a)
pb = self.find(b)
if pa == pb:
return
if self.rank[pa] > self.rank[pb]:
self.parent[pb] = pa
self.rank[pa] += self.rank[pb]
self.rank[pb] = 0
else:
self.parent[pa] = pb
self.rank[pb] += self.rank[pa]
self.rank[pa] = 0
file = open("input.txt", 'r')
line = file.readline().split()
n, m = int(line[0]), int(line[1])
set = DisjointSet(n + 1)
for _ in range(m):
line = file.readline().split()
if int(line[0]) == 1:
set.union(int(line[1]), int(line[2]))
else:
if set.find(int(line[1])) != set.find(int(line[2])):
print("NU")
else:
print("DA")