Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

빠똥빠똥

9466번 텀 프로젝트(DFS, 싸이클, 연결요소) - ☆ 본문

백준

9466번 텀 프로젝트(DFS, 싸이클, 연결요소) - ☆

조주똥 2020. 6. 11. 19:41

#문제링크 : 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는 초기화할 필요가 없다.)

Code