먼저 아주 단순한 FIND와 UNION 연산을 구현해 보겠습니다.
코드 13-3
class DisjointSet:
def __init__(self, vnum):
self.parent = [-1 for _ in range(vnum)]
def simple_find(self, i):
while self.parent[i] >= 0:
i = self.parent[i]
return i
def simple_union(self, i, j):
self.parent[i] = j
코드 13-3을 보면 FIND와 UNION 연산을 구현했습니다. simple_find() 메서드는 매개변수 i가 속한 집합의 루트를 반환하기 때문에 parent[i] 값이 음수가 되기 전까지 계속해서 루트 쪽으로 타고 올라가면 됩니다.