Written by
nodejs-style
on
on
[9466] 텀 프로젝트
[9466] 텀 프로젝트
#include < stdio.h >
#include < string .h >
int a[ 100001 ];
bool check[ 100001 ];
bool visit[ 100001 ];
int cnt = 0 ;
void dfs( int cur)
{
visit[cur] = true ;
int next = a[cur];
if ( ! visit[next]) dfs(next);
if ( ! check[next]){
for ( int i = next; i ! = cur; i = a[i]) cnt + + ;
cnt + + ;
}
check[cur] = true ;
return ;
}
int main( void ) {
int t, i, j, n = 0 ;
scanf ( "%d" , & t);
while (t - - ) {
scanf ( "%d" , & n);
for (i = 1 ; i < = n; i + + ) {
a[i] = visit[i] = check[i] = 0 ;
scanf ( "%d" , & a[i]);
}
cnt = 0 ;
for (i = 1 ; i < = n; i + + ) {
if (visit[i] = = false )
dfs(i);
}
printf ( "%d
" ,n - cnt);
}
return 0 ;
}
from http://dizlet.tistory.com/81 by ccl(A) rewrite - 2021-09-21 07:00:57