Kruskal 디버깅 기준

채택 여부를 결정한 뒤에만 union한다

사이클 판정과 DSU 상태 변경을 섞으면 skip 간선을 실수로 MST에 넣기 쉽습니다. 로그는 find -> decide -> union -> count 순서로 나누세요.

1find간선 양 끝의 현재 대표를 먼저 구한다.
2decide대표가 같으면 skip, 다르면 take로 결정한다.
3uniontake일 때만 두 집합을 병합한다.
4counttake일 때만 used와 total을 증가시킨다.
edgerootsdecisionstate change
1-2 1, 2 take union(1,2), used=1, total += 1
2-3 1, 3 take union(1,3), used=2, total += 2
1-3 1, 1 skip union 없음, used와 total도 그대로
정상 패턴 `if rootA != rootB` 안에서만 edge 채택, union, count 증가를 함께 수행합니다.
위험 패턴 union을 먼저 호출하거나 skip 간선까지 total에 더하면 사이클 비용이 섞입니다.