func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e6 + 6;   vector<int> G[N];   int d[N];   void dfs(int u, int f, int dep) {     d[u] = dep;     for (int i = 0, iend = G[u].size(); i < iend; ++i) {       int v = G[u][i];       if (v != f) dfs(v, u, dep + 1);     }   }   int main() {     int T;     scanf( %d , &T);     while (T--) {       int n, a, b, da, db;       scanf( %d%d%d%d%d , &n, &a, &b, &da, &db);       for (int i = 1; i <= n; ++i) G[i].clear();       for (int i = 1; i <= n - 1; ++i) {         int u, v;         scanf( %d%d , &u, &v);         G[u].push_back(v), G[v].push_back(u);       }       if (2 * da >= db) {         puts( Alice );         continue;       }       dfs(1, 0, 0);       int u = 0;       for (int i = 1; i <= n; ++i)         if (d[i] > d[u]) u = i;       dfs(u, 0, 0);       int mx = 0;       for (int i = 1; i <= n; ++i) mx = max(mx, d[i]);       if (da >= (mx + 1) / 2) {         puts( Alice );         continue;       }       dfs(a, 0, 0);       puts(da >= d[b] ?  Alice  :  Bob );     }     return 0;   }   