//离散数学中轮换与对换的关系 轮换长为n的可以换成n-1个对换
include[HTML_REMOVED]
using namespace std;
const int maxn = 1e4 + 10;
int vis[maxn],map[maxn];
int n, cnt;
int main()
{
cin >> n;
for(int i = 1; i <= n;i) cin >> map[i];
for(int i = 1; i <= n;i)
{
int x = map[i],t = x;
if(x != i && !vis[i])
{
vis[x] = 1;
x = map[x];
while(x != t)
{
vis[x] = 1;
x = map[x];
cnt ++;
}
}
}
cout << cnt;
return 0;
}
望丰展?使md