#include <iostream> #include <cstdio> using namespace std; const int N = 1e4 + 10; bool st[N]; int a[N], n, k; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; //瓶子初始序号 for (int i = 1; i <= n; i++) //从每个正确序号出发 if (!st[i]) //如果没有走过 { k++; //环数量加一 for (int j = i; !st[j]; j = a[j]) //走完这个环 每次变更指向a[j] 即瓶子初始序号的第j个 st[j] = true; } cout << n - k; //环最简情况为自指 则最多有n个环 当前有k个环 从K达到n则需要n-k次 return 0; }