func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using vi = vector<int>;   using vvi = vector<vector<int>>;   using vl = vector<ll>;   using vvl = vector<vector<ll>>;   using pi = pair<int, int>;   using pl = pair<ll, ll>;   template <typename U>   void print(U arr) {     for (auto element : arr) {       cout << element <<    ;     }     cout <<   n ;   }   void setup(string s) {     freopen((s +  .in ).c_str(),  r , stdin);     freopen((s +  .out ).c_str(),  w , stdout);   }   const int M = 1e9 + 7;   const int mxN = 1e5 + 1;   vvi adj(mxN);   vi lvl(mxN, 0), sub(mxN, 0);   int getSize(int i, int p) {     sub[i] = 1;     for (auto& e : adj[i]) {       if (e != p && !lvl[e]) {         sub[i] += getSize(e, i);       }     }     return sub[i];   }   ll centroid(int i, int p, int n) {     for (auto& e : adj[i]) {       if (e != p && !lvl[e] && sub[e] > n / 2) return centroid(e, i, n);     }     return i;   }   ll decomp(ll i, ll l) {     ll cent = centroid(i, -1, getSize(i, -1));     lvl[cent] = l;     for (ll j : adj[cent])       if (!lvl[j]) decomp(j, l + 1);     return cent;   }   int main(void) {     ios::sync_with_stdio(false);     cin.tie(0);     int n;     cin >> n;     for (ll _ = 0; _ < n - 1; _++) {       int a, b;       cin >> a >> b;       adj[a].push_back(b);       adj[b].push_back(a);     }     decomp(1, 1);     for (ll i = 1; i < n + 1; i++) cout << (char)( A  + lvl[i] - 1) <<    ;     return 0;   }   