fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. // Numeric Constants
  5. #define N 1000000007
  6. #define maxs 200005
  7. #define mins 1005
  8. #define eps 1e-14
  9. #define imax 2000000200
  10. #define llmax 1000000002000000000ll
  11. #define pi 3.141592653589793
  12.  
  13. // Others
  14. #define ll long long
  15. #define pb push_back
  16. #define gc getchar_unlocked
  17. #define iosbase ios_base::sync_with_stdio(false)
  18. #define pii pair<int,int>
  19. #define pll pair<ll,ll>
  20. #define ppi pair<pair<int,int>,int>
  21. #define ppl pair<pll,ll>
  22. #define vi vector<int>
  23. #define sc scanf
  24. #define pr printf
  25. #define lld I64d
  26. #define F first
  27. #define S second
  28. #define siter set<int>::iterator
  29. #define p_pq priority_queue
  30. #define ub upper_bound
  31. #define lb lower_bound
  32.  
  33. int mark[maxs],depth[maxs],stones[maxs],grundy[maxs];
  34. vector<int>adj[maxs];
  35.  
  36. void dfs(int k){
  37. mark[k]=1;
  38. for(auto p:adj[k]){
  39. if(!mark[p]){
  40. depth[p]=depth[k]+1;
  41. dfs(p);
  42. }
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. int n,m,q,i,j,x,y;
  49. sc("%d",&n);
  50. for(i=1;i<=n;i++){
  51. sc("%d",&stones[i]);
  52. if(stones[i]&1){
  53. stones[i]--;
  54. }
  55. stones[i]>>=1;
  56. }
  57. for(i=1;i<=(n-1);i++){
  58. sc("%d %d",&x,&y);
  59. adj[x].pb(y);
  60. adj[y].pb(x);
  61. }
  62. dfs(1);
  63. for(i=1;i<=n;i++){
  64. if(stones[i]&1){
  65. grundy[i]=depth[i];
  66. }
  67. else{
  68. grundy[i]=0;
  69. }
  70. }
  71. int ans=0;
  72. for(i=1;i<=n;i++){
  73. ans^=grundy[i];
  74. }
  75. if(!ans){
  76. pr("Ross\n");
  77. }
  78. else{
  79. pr("Rachel\n");
  80. }
  81. return 0;
  82. }
Runtime error #stdin #stdout 0.19s 8936KB
stdin
Standard input is empty
stdout
Standard output is empty