80分,开O2还是超时
查看原帖
80分,开O2还是超时
505417
H2ptimize_AFO楼主2022/5/1 16:03
#include<bits/stdc++.h>
using namespace std;

const int MAXN=200010,INF=0x7fffffff;

int n,ans=INF,start;
int vis[MAXN];
bool start[MAXN];
vector<int>G[MAXN];

void dfs(int step,int n)
{
	if(step>=ans)return;
	if(vis[n])
	{
		ans=min(step-vis[n],ans);
		return;
	}
	for(int i=0;i<G[n].size();i++)
	{
		vis[n]=step+1;
		dfs(step+1,G[n][i]);
		vis[n]=0;
	}
}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int tmp;
		scanf("%d",&tmp);
		G[i].push_back(tmp);
	}
	for(int i=1;i<=n;i++)
	{
		start=i;
		dfs(0,i);
	}
	printf("%d",ans+1);
	return 0;
}

qwq

2022/5/1 16:03
加载中...