Make-Set(x)
서로소 집합 초기화 작업
유일한 멤버 x를 포함하는 새로운 지합 생성
static void make() {
for (int i = 0; i < N; i++) parents[i] = i;
}
Find-Set(x)
x가 속한 집합 찾기 (대표자 찾기)
x를 포함하는 집합을 찾는 연산
static int findSet(int a) {
if (a == parents[a]) return a;
return findSet(parents[a]);
}
Union(x, y)
x가 속한 집합과 y가 속한 집합의 합집합
x와 y를 포함하는 두 집합 통합
static boolean union(int first, int second) {
int firstRoot = findSet(first);
int secondRoot = findSet(second);
if (firstRoot == secondRoot) return false;
parents[secondRoot] = secondRoot;
return true;
}