标签:
#include<cstdio> char buf[10000005],*ptr=buf-1; inline int input(){ int x=0,c=*++ptr; while(c>57||c<48)c=*++ptr; while(c>47&&c<58)x=x*10+c-48,c=*++ptr; return x; } const int N=1000100; int n; int fa[N],q[N],in[N],ql=0,qr=0; bool ed[N]; int main(){ fread(buf,1,10000000,stdin); n=input(); for(int i=1;i<=n;i++)++in[fa[i]=input()]; for(int i=1;i<=n;i++)if(!in[i])q[qr++]=i; while(ql!=qr){ int w=q[ql++]; ed[w]=1; if(!--in[fa[w]])q[qr++]=fa[w]; } int ans=0; for(int a=1;a<=n;a++)if(!ed[a]){ int b=a; do{ b=fa[b]; ed[b]=1; }while(b!=a); ++ans; } printf("%d\n",ans); return 0; }
bzoj1529 [POI2005]ska Piggy banks
标签:
原文地址:http://www.cnblogs.com/ccz181078/p/5515091.html