<정의 및 활용>
- 방향 그래프에서 사이클 그룹을 구하는 알고리즘
- u 에서 v로 갈 수있고 v에서도 u로 갈 수 있을 때 u와 v는 '강하게 연결되었다'라고 한다
- 재귀 노드 또한 다른 사이클의 집합이 될 수 있다
- 코사라주 알고리즘: 순방향과 역방향 그래프를 dfs로 탐색
- 시간복잡도
O(V + E)
<코사라주 알고리즘>
- 입력을 받을 때 역방향을 나타내는
r_edge에도 입력을 받는다 dfs(cur)로 순방향 그래프를 탐색하며 가장 깊은 노드부터 stack에 넣어준다r_dfs(cur, groupNum)로 역방향 그래프를 탐색하며 stack pop을 통해 탐색 노드에 그룹 번호를 부여한다 => ex) pop node = 1 일때 1에서 r_dfs 수행 -> 방문 노드 같은 번호 부여groupNum은 사이클 그룹의 개수,ssc[i]는 i의 그룹 번호를 의미한다

