#include<bits/stdc++.h>
using namespace std;
const int N=200005;
int k,n,ans=1e9;
int deg[N],fa[N];
bool vis[N];
inline int read()
{
int w=0,x=0;
char c=getchar();
while(!isdigit(c))
w|=c=='-',c=getchar();
while(isdigit(c))
x=(x<<3)+(x<<1)+(c^48),c=getchar();
return w?-x:x;
}
inline void topsort(int x)
{
while(1)
{
if(!deg[x])
vis[x]=true;
else break;
deg[fa[x]]--;
x=fa[x];
}
}
inline int dfs(int x)
{
int step=0;
while(!vis[x])
{
++step;
vis[x]=true;
x=fa[x];
}
return step;
}
int main()
{
n=read();
for(register int i=1;i<=n;++i)
fa[i]=read(),deg[fa[i]]++;
for(register int i=1;i<=n;++i)
if(!deg[i]) topsort(i);
for(register int i=1;i<=n;++i)
if(!vis[i]) ans=min(ans,dfs(i));
printf("%d",ans);
return 0;
}
编译器居然说我编译失败? 自己在c++上编译的好好的啊