func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long oo = 1000000000000000000;   long long sum, ans = 0, mx = 0, mn = 1000000000, num, pos;   vector<int> v[100001];   long long int a[100001], mxx[100001];   map<int, int> mp[100001];   void unin(int x, int y) {     if (mp[x].size() < mp[y].size()) {       mp[x].swap(mp[y]);       mxx[x] = mxx[y];       a[x] = a[y];     }     for (map<int, int>::iterator it = mp[y].begin(); it != mp[y].end(); it++) {       mp[x][(it)->first] += (it)->second;       if (mp[x][it->first] == mxx[x]) {         a[x] += it->first;       } else if (mp[x][it->first] > mxx[x]) {         mxx[x] = mp[x][it->first];         a[x] = it->first;       }     }   }   void dfs(int u, int pr = -1) {     for (int i = 0; i < v[u].size(); i++) {       int to = v[u][i];       if (to == pr) continue;       dfs(to, u);       unin(u, to);     }   }   int main() {     int n;     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> num;       mp[i][num]++;       mxx[i] = 1;       a[i] = num;     }     int x, y;     for (int i = 1; i < n; i++) {       cin >> x >> y;       v[x].push_back(y);       v[y].push_back(x);     }     dfs(1);     for (int i = 1; i <= n; i++) {       num = 0;       cout << a[i] <<    ;       sum = 0;     }   }   