果然还是以前的代码
枚举就完事,看哪一个奶牛会陷入循环即可。
#include<bits/stdc++.h>
using namespace std;
int n,f[1005],l[1005];
bool loopy[1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>f[i];
// memset(name,0,sizeof(name));
for(int i=1;i<=n;i++){
memset(l,0,sizeof(l));
if(loopy[i])continue;
int x=i; l[x]=1;
while(1){
if(x==0)break;
if(l[f[x]]){
for(int i=1;i<=n;i++)if(l[i])loopy[i]=1;
break;
}
l[f[x]]=1; x=f[x];
}
}
int ans=n;
for(int i=1;i<=n;i++)if(loopy[i])ans--;
cout<<ans<<endl;
return 0;
}