水题一道。
#include<cstdio>
#include<cstring>
int n,ans=0,fa[1000001];
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i) fa[i]=i;
for(int i=1;i<=n;++i){
int y;scanf("%d",&y);
int xx=find(i),yy=find(y);
if(xx!=yy) fa[xx]=yy;
}
for(int i=1;i<=n;++i) if(fa[i]==i) ans++;
printf("%d",ans);
return 0;
}