P2661求助
  • 板块学术版
  • 楼主sgz566
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/10/18 23:27
  • 上次更新2023/11/4 03:19:49
查看原帖
P2661求助
378741
sgz566楼主2021/10/18 23:27

WA#2 求助大佬

P2661[NOIP2015 提高组] 信息传递

#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;
}
2021/10/18 23:27
加载中...