You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

14 lines
451 B
C++

#include <cstdio>
int n, next[200001], dfn[200001], vis[200001], idx, ans = 200001;
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", &next[i]);
for (int i = 1, cur; i <= n; i++) if (!dfn[i])
{
for (cur = i; dfn[cur] == 0; cur = next[cur]) dfn[cur] = ++idx, vis[cur] = i;
if (vis[cur] == i && idx - dfn[cur] < ans) ans = idx - dfn[cur];
}
printf("%d", ans + 1);
return 0;
}