WA#2,求调
#include<bits/stdc++.h>
using namespace std;
long long n,t[200005],cnt[200005],num,ans=2e15,fa;
bool f[200005],f2[200005];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&t[i]);
for(int i=1;i<=n;i++)
{
if(!f[i])
{
num=0,fa=0;
for(int j=i;;j=t[j])
{
if(f2[j])
{
if(cnt[fa]>cnt[j])ans=min(ans,cnt[fa]-cnt[j]+1);
break;
}
if(f[j])break;
f2[fa]=1;
f[j]=1;
num++;
cnt[j]=num;
fa=j;
}
}
}
cout<<ans;
}
比较奇怪的做法,#2输出了2e15,别的都对。