https://www.acmicpc.net/problem/10451
#include<stdio.h>
#include<stdbool.h>
static int arr[1001];
static bool check[1001];
static int n;
static int dfs(int v){
check[v]=true;
int ans=0;
for(int i=1;i<=n;i++){
if(arr[v]==i && check[i]==false){
dfs(i);
ans=1;
}
else if(arr[v]==i && v==i) ans=1;
}
return ans;
}
int main() {
int t;
scanf("%d",&t);
while(t-->0){
scanf("%d",&n);
int count=0;
for(int i=1;i<=n;i++){
scanf("%d",&arr[i]);
check[i]=false;
}
for(int i=1;i<=n;i++){
if(dfs(i)==1) count++;
}
printf("%d\n",count);
}
}