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에 더하면 사이클 비용이 섞입니다.