fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long int
  5.  
  6.  
  7. int main()
  8. {
  9. ll t;
  10. cin>>t;
  11. while(t--)
  12. {
  13. ll n;
  14. cin>>n;
  15.  
  16. vector<vector<int> > graph(n+1);
  17. map<int,int> mp;
  18. set<int> s;
  19. int population[n];
  20. for(int i=0;i<n;i++)
  21. {
  22. cin>>population[i];
  23. s.insert(population[i]);
  24. mp[population[i]] = i;
  25. }
  26. for(int i=0;i<n-1;i++)
  27. {
  28. ll a,b;
  29. cin>>a>>b;
  30. graph[a].push_back(b);
  31. graph[b].push_back(a);
  32. }
  33. int ans[n+1];
  34. for(int i=0;i<n;i++)
  35. {
  36. s.erase(population[i]);
  37. vector<int> :: iterator j;
  38. for(j=graph[i+1].begin();j<graph[i+1].end();j++)
  39. {
  40. int index = *j;
  41. s.erase(population[index-1]);
  42. }
  43. //sort(s.begin(),s.end(),greater<int>());
  44. ans[i] = *(s.rbegin());
  45. s.insert(population[i]);
  46. for(j=graph[i+1].begin();j<graph[i+1].end();j++)
  47. {
  48. int index = *j;
  49. s.insert(population[index-1]);
  50. }
  51. }
  52. for(int i=0;i<n;i++)
  53. {
  54. cout<<mp[ans[i]]<<" ";
  55. }
  56. cout<<endl;
  57. }
  58.  
  59.  
  60. return 0;
  61. }
Success #stdin #stdout 0s 15240KB
stdin
1
6
5 10 15 20 25 30
1 3
2 3
3 4
4 5
4 6
stdout
5 5 5 1 5 4