#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, f, cnt, fa[200005], ans = LONG_LONG_MAX;
int find (int x)
{
cnt++;
if (fa[x] == x) return x;
else return find(fa[x]);
}
signed main ()
{
scanf("%lld", &n);
for (int i = 1; i <= n; i ++)
fa[i] = i;
for (int i = 1; i <= n; i++)
{
cnt = 0, scanf("%lld", &f);
if (find(f) == i)
ans = min(ans, cnt);
else
fa[i] = f;
}
printf("%lld", ans);
return 0;
}
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, f, cnt, fa[200005], ans = LONG_LONG_MAX;
int find (int x)
{
cnt++;
if (fa[x] == x) return x;
else return fa[x] = find(fa[x]);
}
signed main ()
{
scanf("%lld", &n);
for (int i = 1; i <= n; i ++)
fa[i] = i;
for (int i = 1; i <= n; i++)
{
cnt = 0, scanf("%lld", &f);
if (find(f) == i)
ans = min(ans, cnt);
else
fa[i] = f;
}
printf("%lld", ans);
return 0;
}
有没有哪位大佬能帮蒟蒻解释一下为什么加上fa[x] = 就会错