#include <stdio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(void) {
int n;
while(scanf("%d",&n)!=EOF){
int i,Friend[n],Find[n],sum=0;//sum為有幾個小團體
for(i=0;i<n;i++) Find[i]=0;//有無找過 0沒找過 1有找過
for(i=0;i<n;i++) scanf("%d",&Friend[i]);
for(i=0;i<n;i++){
if(Find[i]==0){//沒找過的話
int index=i;//這裡大概的意思是用陣列裡的值去當作元素編號
do{
Find[index]=1;
index=Friend[index];
}while(Friend[index]!=i);//找完一圈
Find[index]=1;//記的最後一個要標記已找過
sum++;
}
}
printf("%d\n",sum);
}
return 0;
}
出題者絞盡腦汁,出一些題目讓大家練習,
你卻直接把解法貼出來
你到底在想什麼。
出題者絞盡腦汁,出一些題目讓大家練習,
你卻直接把解法貼出來
你到底在想什麼。
貼答案給要抄的人抄阿,要練習的自己會練
出題者絞盡腦汁,出一些題目讓大家練習,
你卻直接把解法貼出來
你到底在想什麼。
貼答案給要抄的人抄阿,要練習的自己會練
呵呵