//https://www.acmicpc.net/problem/10451 #include <iostream> | |
using namespace std; | |
int graph[1001]; | |
bool visited[1001]; | |
int n; | |
void init(){ | |
for(int i=0; i<=n; i++) | |
graph[i]=visited[i]=0; | |
} | |
void input(){ | |
cin >> n; | |
for(int i=1; i<=n; i++) | |
cin >> graph[i]; | |
} | |
void dfs(int now){ | |
visited[now]=1; | |
int next=graph[now]; | |
if(!visited[next]) dfs(next); | |
} | |
int main(){ | |
int t; | |
cin >> t; | |
while(t-->0){ | |
init(); | |
input(); | |
int ans=0; | |
for(int i=1; i<=n; i++){ | |
if(!visited[i]){ | |
dfs(i); | |
ans++; | |
} | |
} | |
cout << ans << endl; | |
} | |
} |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
180217_2660_회장뽑기 (0) | 2018.02.17 |
---|---|
180216_2605_줄 세우기 (0) | 2018.02.16 |
180214_11568_민균이의 계략 (0) | 2018.02.14 |
180213_1563_개근상 (0) | 2018.02.13 |
180212_5554_심부름 가는 길 (0) | 2018.02.12 |