fork download
  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<iostream>
  6. #include<fstream>
  7. #include<map>
  8. #include<ctime>
  9. #include<set>
  10. #include<queue>
  11. #include<cmath>
  12. #include<vector>
  13. #include<bitset>
  14. #include<functional>
  15. #define x first
  16. #define y second
  17. #define mp make_pair
  18. #define pb push_back
  19. #define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
  20. #define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
  21. using namespace std;
  22.  
  23. typedef long long LL;
  24. typedef double ld;
  25.  
  26. const int MAX=1000000+10;
  27.  
  28. int n;
  29. int ans;
  30. int fa[MAX];
  31.  
  32. int findfather(int u)
  33. {
  34. return u==fa[u]?u:fa[u]=findfather(fa[u]);
  35. }
  36.  
  37. int main()
  38. {
  39. int i,p;
  40. scanf("%d",&n);
  41. REP(i,1,n)
  42. fa[i]=i;
  43. REP(i,1,n)
  44. {
  45. scanf("%d",&p);
  46. fa[findfather(i)]=findfather(p);
  47. }
  48. REP(i,1,n)
  49. if(findfather(i)==i)
  50. ++ans;
  51. cout<<ans<<endl;
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0s 7248KB
stdin
Standard input is empty
stdout
0