[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