defunion(self, a, b): ra = self.find(a) rb = self.find(b) if ra == rb: return ifself.size[ra] < self.size[rb]: self.parent[ra] = rb self.size[rb] += self.size[ra] else: self.parent[rb] = ra self.size[ra] += self.size[rb]
whileTrue: try: n, k = map(int, input().split()) except: break
dsu = DSU(n) for _ inrange(k): a, b = map(int, input().split()) dsu.union(a, b) roots = set() for i inrange(n): roots.add(dsu.find(i)) print(len(roots))