fork download
  1. #include<iostream>
  2. #include<vector>
  3. #include<algorithm>
  4. #include<set>
  5. using namespace std;
  6.  
  7. int main(){
  8. ios::sync_with_stdio(false);
  9. cin.tie(nullptr);
  10. int t;
  11. cin >> t;
  12. vector<string> results;
  13. while(t--){
  14. string result;
  15. int n;
  16. cin >> n;
  17. vector<bool> visited(n+1, false);
  18. vector<int> a(n+1), r(n+1, 0);
  19. vector<vector<int> > adj(n+1);
  20. for(int i = 1; i <= n; i++){
  21. cin >> a[i];
  22. }
  23. for(int i = 1; i < n; i++){
  24. int u, v;
  25. cin >> u >> v;
  26. adj[u].push_back(v);
  27. adj[v].push_back(u);
  28. }
  29. for(int i = 1; i <= n; i++){
  30. set<int> s;
  31. for(auto u: adj[i]){
  32. if(a[u] == a[i]){
  33. r[a[i]] = 1;
  34. }
  35. else if(s.count(a[u])){
  36. r[a[u]] = 1;
  37. }
  38. else{
  39. s.insert(a[u]);
  40. }
  41. }
  42. }
  43. for(int i = 1; i <= n; i++){
  44. cout << r[i];
  45. }
  46. cout << endl;
  47. }
  48. }
Success #stdin #stdout 0.01s 5272KB
stdin
4
3
1 2 3
1 3
2 3
4
3 1 1 3
1 2
2 3
4 2
4
2 4 4 2
1 2
2 3
3 4
13
1 4 4 7 4 7 1 1 7 11 11 11 11
1 2
2 3
3 4
4 5
4 6
2 7
7 8
2 9
6 10
5 11
11 12
10 13
stdout
000
1010
0001
1001001000100