求助
查看原帖
求助
378741
sgz566楼主2021/10/21 20:12

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,别的都对。

2021/10/21 20:12
加载中...