代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[200010];
int vis[200010];
int ans=2e9;
void dfs(int x,int cnt){
if(vis[x]){
if(cnt>vis[x])ans=min(ans,cnt-vis[x]);
return;
}
vis[x]=cnt;
dfs(a[x],cnt+1);
vis[x]=0;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<n;i++)dfs(i,0);
printf("%d\n",ans);
return 0;
}