disjoint set union은 여러 원소들을 서로 겹치지 않는 그룹들로 나눠서 관리한다.이때 각 그룹을 부모 포인터 트리로 관리하며, root 원소의 parent는 자기 자신이다. 코드 class DSU: def __init__(self, n): # 처음에는 모든 원소의 parent를 자기 자신으로 설정하여, 모든 원소가 각각의 그룹을 형성하도록 세팅한다. # parent[i] = i면 i가 루트(대표) self.parent = list(range(n)) # size[root] = 해당 그룹 원소 개수 (union 할 때 작은 쪽을 큰 쪽에 붙이기) self.size = [1] * n def find(self, x):..