loosie999   2년 전

DFS로는 간단히 풀리는데 괜히 서로소조합으로 해볼려고 했다가 헤매고있네요..

ranks 배열은 i를 부모로 삼는 자식노드의 수를 저장하도록 설계했습니다.

예로, 1->3->4 이면 ranks[1] = 2 이렇게 싸이클을 찾아내어

ranks의 값이 0이아닌 값을 싸이클로 판별하여 출력하게 했습니다.

아래의 예제도 1이 출력되는데 다른 반례를 못찾겠네요 ㅠㅠ

1
4
3 4 2 1

loosie999   2년 전

그냥 rank배열을 빼고 union-find로직으로만 해결했습니다.

union로직에서 x와 y의 parent가 같아지는 순간을 Cycle로 카운트하였더니 풀렸습니다!

댓글을 작성하려면 로그인해야 합니다.