#include <stdio.h> #include <iostream> #include <algorithm> #include <string> #include <string.h> #include <map> #include <vector> using namespace std; int T; int N; vector<int> graph[1010]; int visited[1010]; void DFS(int start) { visited[start] = 1; for(int i = 0; i < graph[start].size(); i++) { if(visited[graph[start][i]] == 0) { DFS(graph[start][i]); } } } int main(void) { // freopen("B10451_input.txt", "r", stdin); cin >> T; for(int k = 1; k <= T; k++) { for(int i = 1; i <= 1000; i++) { graph[i].clear(); } memset(visited, 0, sizeof(visited)); cin >> N; for(int a = 1; a <= N; a++) { int b; cin >> b; graph[a].push_back(b); graph[b].push_back(a); } int cnt = 0; for(int i = 1; i <= N; i++) { if(visited[i] == 0) { DFS(i); cnt++; } } cout << cnt << endl; } return 0; } | cs |
'Baekjoon > DFS' 카테고리의 다른 글
[백준 9466] 텀 프로젝트 (DFS) (C/C++) (★★★) (0) | 2020.01.26 |
---|---|
[백준 2667] 단지번호 붙이기 (DFS) (C/C++) (0) | 2020.01.26 |
[백준 13023] ABCDE (DFS) (C/C++) (0) | 2019.12.08 |
[백준 14500] 테트로미노 (DFS) (C/C++) (★) (0) | 2019.11.19 |
[백준 10971] 외판원 순회2 (DFS) (C/C++) (★) (0) | 2019.11.19 |