30分qwq
查看原帖
30分qwq
297555
Zlc晨鑫楼主2020/10/3 09:49

WA,没T

#include <cstdio>

const int maxn=200005;
int n, e[maxn], p[maxn], ans=0;
bool vis[maxn];

void dfs(int x, int s) {
	if (ans) return;
	if (vis[e[x]]) {
		ans=s-p[e[x]]+1;
		return;
	}
	p[x]=s;
	vis[e[x]]=true;
	dfs(e[x], s+1);
}

int main() {
	scanf("%d", &n);
	for (int i=1; i<=n; ++i) {
		int t;
		scanf("%d", &t);
		e[i]=t;
	}
	vis[1]=true;
	dfs(1, 0);
	printf("%d\n", ans);
	return 0;
}
2020/10/3 09:49
加载中...