前言
因为 一不小心把init 写在了 cin>>n前面 导致debug半天 所以下次不分开写了 呜呜呜
CODE
#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
typedef long long ll;
const int N = 1e6+10;
int p[N],n,m,st[N];
int find(int x)
{
if(x!=p[x])
return p[x] =find(p[x]);
return p[x];
}
void init()
{
for(int i=1; i<=n; i++)
{
p[i] = i;
}
}
int cs;
void solve()
{
cin>>n;
init();
int ans =0;
for(int i=1; i<=n; i++)
{
int x;
cin>>x;
int fi = find(i);
int fx = find(x);
p[fi] =fx;
}
for(int i=1; i<=n; i++)
{
if(p[i] == i)
ans++;
//cout<<p[i]<<" "<<i<<endl;
// cout<<"???"<<endl;
}
cout<<ans<<endl;
}
int main()
{
IOS;
solve();
return 0;
}