Guest User

Untitled

a guest
Jun 17th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.69 KB | None | 0 0
  1. #include<cstdio>
  2. #include<vector>
  3. using namespace std;
  4.  
  5. int result[50001]={0};
  6.  
  7. void search(vector<int> edge[],int from,int to)
  8. {
  9. result[to]=from;
  10. for(int i=0;i<edge[to].size();i++)
  11. {
  12. if(from!=edge[to][i])
  13. search(edge,to,edge[to][i]);
  14. }
  15.  
  16. }
  17. int main()
  18. {
  19. int n,r1,r2;
  20. scanf("%d%d%d",&n,&r1,&r2);
  21. vector<int> edge[n+1];
  22. for(int i=1;i<=n;i++)
  23. {
  24. int t;
  25. if(r1==i)
  26. continue;
  27. scanf("%d",&t);
  28. edge[i].push_back(t);
  29. edge[t].push_back(i);
  30. }
  31.  
  32. for(int i=0;i<edge[r2].size();i++)
  33. {
  34. search(edge,r2,edge[r2][i]);
  35. }
  36.  
  37. for(int i=1;i<=n;i++)
  38. {
  39. if(i==r2)
  40. continue;
  41.  
  42. printf("%d ",result[i]);
  43. }
  44.  
  45. puts("");
  46. return 0;
  47. }
Add Comment
Please, Sign In to add comment