Advertisement
a53

Cartierul

a53
Feb 22nd, 2022
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,s[200005];
  4. set<int>r[200005];
  5. vector<int>v[200005];
  6. bool vz[200005];
  7. void dfs(int x){
  8. vz[x]=true;
  9. for(int i=0;i<(int)v[x].size();i++){
  10. if(vz[v[x][i]])continue;
  11. dfs(v[x][i]);
  12. if(r[v[x][i]].size()>r[x].size())swap(r[v[x][i]],r[x]);
  13. for(int y:r[v[x][i]])r[x].insert(y);
  14. }
  15. s[x]=r[x].size();
  16. }
  17. int main(){
  18. ios_base::sync_with_stdio(false);
  19. cin.tie(nullptr);
  20. cout.tie(nullptr);
  21. cin>>n;
  22. for(int i=1;i<=n;i++){
  23. int x;
  24. cin>>x;
  25. r[i].insert(x);
  26. }
  27. for(int i=1;i<n;i++){
  28. int a,b;
  29. cin>>a>>b;
  30. v[a].push_back(b);
  31. v[b].push_back(a);
  32. }
  33. dfs(1);
  34. for(int i=1;i<=n;i++)cout<<s[i]<<" ";
  35. return 0;
  36. }
  37.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement