코드를 안 읽긴 했지만 아마 n2인 거 같네용(모든 정점에서 dfs를 돌리면 안됨...check를 해서 방문한 정점은 다시 방문하지 않게 해야함)
제 생각으로는
7 3 1 3 7 3 4 6
를 예로 들면
1로 탐색을 했을때, 1-3-3이 cycle이 되니까, 1-X, 3-O로 표시하고
2로 탐색을 했을때, 1은 방문한 적이 있으므로 X
3은 O
4는 4-7-6-4 cycle이므오 4,6,7에 O를 표시
5는 5-3탐색에서 3은 방문한 적이 있으므로 X
이렇게 짜면 O(n)될듯한데....
mesahwi 5년 전
나름 최적화했다고 생각하는데 시간 초과가 나오네요
제 풀이 방법은 :
방문한 노드를 black에, 방문 중인 노드를 gray에 넣으며 dfs하는 것입니다.
gray에 있는 노드를 다시 방문했을 경우 그 index를 이용해 cycle되는 노드의 수를 계산했습니다.
부탁드립니다ㅜㅜ 도와주세요