문제.
풀이.
유니온 파인드를 이용해서 풀면된다.
우선 생각해야 할게
유니온 연산을 하기전에 파인드 연산을 먼저해서 둘의 루트 노드가 같다면 사이클이 완성된것이다.
예를 들어
parent = [0, 1, 2, 3, 4, 5] 가 있고
이제부터 입력을 받는다고 한다면
0 1이 들어오면 둘의 파인드 연산을 했을때는 각각 루트 노드가 0 , 1이다
둘의 루트 노드가 다르니 유니온 연산을 시행한다
1, 2 입력이 들어오면 둘의 파인드 연산 결과는 0, 2
2, 3 입력이 들어오면 둘의 파인드 연산 결과는 0, 3
0, 3 입력이 들어오면 둘의 파인드 연산 결과는 0, 0 이므로 사이클이 완성됐다.
소스코드.
'프로그래밍 > 백준' 카테고리의 다른 글
백준 1197 최소 스패닝 트리 - 파이썬 (0) | 2021.08.04 |
---|---|
백준 9372 상근이의 여행 - 파이썬 (0) | 2021.08.04 |
백준 4195 친구 네트워크 - 파이썬 (0) | 2021.08.03 |
백준 1976 여행 가자 - 파이썬 (0) | 2021.08.03 |
백준 1717 집합의 표현 - 파이썬 (0) | 2021.08.03 |