仔细看几遍题,就会发现这其实是道傻逼题(一开始推单调性的我应该更加傻逼)。如果
a
将属于
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
int ar[1000010],id[1000010],sm[1000010];
bool cl(){
int i,j,k,n;
if(scanf("%d",&n)==-1)return 0;
for(i=1;i<=n;scanf("%d",&ar[i++]))
id[i]=i,sm[i]=1;
for(i=1;i<=n;++i){
if(id[i]==id[ar[i]])continue;
sm[id[i]]++,sm[id[ar[i]]]--;
id[ar[i]]=id[i];
}
printf("%d\n",sm[id[1]]-1);
return 1;
};
int main(){
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
while(cl());
return 0;
};