70TLE 求助
查看原帖
70TLE 求助
554884
王轶楼主2023/6/7 16:43

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[200010];
int vis[200010];
int ans=2e9;
void dfs(int x,int cnt){
	if(vis[x]){
		if(cnt>vis[x])ans=min(ans,cnt-vis[x]); 
		return;
	}
	vis[x]=cnt;
	dfs(a[x],cnt+1);
	vis[x]=0;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	for(int i=1;i<n;i++)dfs(i,0);
	printf("%d\n",ans);
	return 0;
}
2023/6/7 16:43
加载中...