#include #include int a[300000]; int ok[300000]; int main() { int n, foo, moves, ok_num; while(scanf(" %d", &n) == 1) { ok_num = n; for (int i = 1; i <= n; i++) { scanf(" %d", &(a[i])); if (a[i] == i) { ok[i] = 1; ok_num--; } else ok[i] = 0; } moves = 0; int i = 1; // while there are elements to visit: while (ok_num > 0 && i <= n){ foo = i; ok_num--; ok[i] = 1; while (a[foo] != i) { foo = a[foo]; ok_num--; ok[foo] = 1; moves++; } i++; } printf("%d\n", moves); } return 0; }