#include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; if (!(cin >> n)) return 0; vector a(n + 1); for (int i = 1; i <= n; ++i) { cin >> a[i]; } // 0: 未訪問, 1: 探索中, 2: 探索完了 vector state(n + 1, 0); int ans = 0; for (int i = 1; i <= n; ++i) { if (state[i] != 0) continue; int curr = i; while (state[curr] == 0) { state[curr] = 1; curr = a[curr]; } // 新しい閉路を発見した場合のみカウントを増やす if (state[curr] == 1) { ans++; } // 通ってきたルートのステータスを探索完了(2)にする curr = i; while (state[curr] == 1) { state[curr] = 2; curr = a[curr]; } } std::println("{}", ans); return 0; }