我是找的最小环,但#2不对,求助
#include<bits/stdc++.h>
using namespace std;
int const MAXN=1e5+5;
int n,cnt,mp[MAXN],vis[MAXN],ans=0x3f3f3f3f;
int dfs(int x) {
int cnt=0,d=x;
bool flag[MAXN]={};
while(!flag[d]) {
flag[d]=1;
d=mp[d];
cnt++;
if(vis[d]) {
return -1;
}
}
return cnt;
}
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
int v;
cin>>v;
mp[i]=v;
}
for(int i=1; i<=n; i++) {
if(!vis[i]) {
int p=dfs(i);
if(p!=-1) {
ans=min(p,ans);
}
vis[i]=1;
}
}
cout<<ans;
return 0;
}