fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main() {
  5. // your code goes here
  6. int n, arr[1005], a, b[2005], count=0;
  7. cin>>n;
  8. for(int i=1; i<=n; i++) cin>>arr[i];
  9. for(int i=1; i<=2005; i++) b[i]=true;
  10. for(int i=1; i<=n; i++) {
  11. if(b[i]) {
  12. count++;
  13. b[i]=false; a=arr[i];
  14. while(a!=i) {b[a]=false; a=arr[a];}
  15. }
  16. }
  17. cout<<count<<endl;
  18. for(int i=1; i<=2005; i++) b[i]=true;
  19. for(int i=1; i<=n; i++) {
  20. if(b[i]) {
  21. cout<<i<<" "; b[i]=false; a=arr[i]; cout<<a;
  22. while(a!=i) {b[a]=false; a=arr[a]; cout<<" "<<a;}
  23. cout<<endl;
  24. }
  25. }
  26. return 0;
  27. }
Success #stdin #stdout 0s 3344KB
stdin
8
2 4 5 1 7 6 3 8
stdout
4
1 2 4 1
3 5 7 3
6 6
8 8