Dolphins의 HelloWorld
[백준]Baekjoon10451(DFS) 본문
문제링크 : https://www.acmicpc.net/problem/10451
#include <iostream> #include <vector> using namespace std; int arr[1001]; bool check[1001]; int point; //맨 처음 cycle이 시작한 시작점 저장 bool DFS(int start) { check[start] = true; int next = arr[start]; if (check[next] == false) return DFS(next); //다음 노드가 탐색된 노드가 아니라면 탐색 else { //다음 노드가 이미 탐색된 노드일 때 if (next == point) return true; //시작 노드와 다음 노드가 같다면 cycle이 맞음 else return false; //시작 노드와 다음 노드가 다르다면 cycle이 아님 } } int main() { int testcase; //테스트케이스의 갯수 int N; //순열의 크기 scanf("%d", &testcase); while (testcase--) { int count = 0; //순열 사이클의 갯수 scanf("%d", &N); for (int i = 1; i <= N; i++) { scanf("%d", &arr[i]); //해당 노드가 가르키는 노드 저장 check[i] = false; // check배열 초기화 } for (int i = 1; i <= N; i++) { if (check[i] == false) { point = i; //시작 노드 저장 if (DFS(i)) count++; // cycle이 맞다면 count증가 } } printf("%d\n", count); } }
'Algorithm > baekjoon문제풀이' 카테고리의 다른 글
[백준]Baekjoon9466(DFS,cycle) (0) | 2018.08.16 |
---|---|
[백준]Baekjoon2331(반복수열) (0) | 2018.08.16 |
[백준]Baekjoon1377(정렬) (0) | 2018.08.14 |
[백준]Baekjoon11004(정렬) (0) | 2018.08.12 |
[백준]Baekjoon11652(정렬)(map 활용) (0) | 2018.08.12 |
Comments