순환주기 그래프
하나 이상의 vertex가 있는 unweighted, directed 그래프가 제공됩니다. 주어진 그래프에 순환주기가 포함되어 있는지 여부를 판단하는 함수를 작성합니다.
순환주기의 정의는 여러 vertex들이 모두 다 서로 연결되고 어느 하나의 vertex에서 시작하여 다시 그 시작점으로 돌아올 수 있음을 의미합니다. 단 하나의 vertex만 있는 그래프도 순환주기 그래프입니다.
그래프의 vertex를 나타내는 edge목록(adjacency list)이 주어집니다. 그래프에 있는 vertex의 수는 edge목록의 길이와 같습니다. 각 개별 edge는 각 인덱스에 해당하는 vertex에서 시작하여 edge목록에 포함되어 있는 vertex로 이동할 수 있음을 의미합니다.
또한 그래프에는 셀프루프가 포함될 수 있습니다. 셀프루프는 대상과 출발지가 동일한 edge입니다. 셀프루프도 순환주기로 간주됩니다.
예제 1
입력
edges = [
[1, 3],
[2, 3, 4],
[0],
[],
[2, 5],
[],
]
출력
true // 그래프에 여러개의 순환주기가 있습니다: // 1) 0 -> 1 -> 2 -> 0 // 2) 0 -> 1 -> 4 -> 2 -> 0