빠똥빠똥
9466번 텀 프로젝트(DFS, 싸이클, 연결요소) - ☆ 본문
#문제링크 : https://www.acmicpc.net/problem/9466
전략 : 학생마다 노드 번호를 부여하고, 방문한 노드를 구별할 체크 배열을 생성한다. 체크 배열은 DFS탐색을 한번 마친 노드들과 DFS탐색을 아직 실행하지 않은 노드를 구별해야한다. 또한 체크 배열은 방문한 노드의 숫자를 알아야 하기 때문에 하나하나 방문한 순서를 체크배열에 저장한다. 요약하면, 체크 배열은 싸이클 구별, 방문 순서 두가지를 저장해야 한다. 노드를 방문하면서 해당 노드가 몇번째로 방문한 노드인지 check.second에 적고, 싸이클 번호는 check.first에 적는다. check.second가 0이 아니면 한번 방문한 노드이기 때문에,
1. 이미 방문한 노드고 같은 싸이클이면 해당 노드의 check.second - 1 로 중복수 전까지 방문한 노드 수를 세어준다.
2. 이미 방문한 노드고 다른 싸이클이면 해당 노드까지 방문한 노드수(cnt)를 세어준다.
※주의사항
1. student, check, not_team은 테케마다 초기화해줘야 한다.
2. cycle, iscycle, cnt 는 싸이클마다 초기화해줘야 한다. (point는 초기화할 필요가 없다.)
'백준' 카테고리의 다른 글
4963번 섬의 개수(BFS, 연결요소) (0) | 2020.06.11 |
---|---|
2667번 단지번호붙이기(BFS, 연결요소) - ☆ (0) | 2020.06.11 |
10951번 A + B - 4(while, 입력 제한x) (0) | 2020.06.11 |
2331번 반복수열(DFS, 싸이클) (0) | 2020.06.10 |
10451번 순열 사이클(DFS, 연결요소) (0) | 2020.06.10 |