func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize(2)   using namespace std;   const int inf = 1e9;   const int NINF = 0xc0c0c0c0;   const int maxn = 1e5 + 7;   const int bas = maxn / 2;   const int Maxn = 1e7 + 7;   const double eps = 1e-6;   const int mod = (1 << 31) - 1;   template <typename T>   void read(T &x) {     x = 0;     char c = getchar();     T flag = 1;     while (c <  0  || c >  9 ) {       if (c ==  - ) flag = -1;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       x = x * 10 + c -  0 ;       c = getchar();     }     x = x * flag;   }   struct edge {     int v, next;   } e[maxn << 1];   int head[maxn], cnt;   void add(int a, int b) {     e[++cnt] = edge{b, head[a]};     head[a] = cnt;   }   int f[maxn][21], dep[maxn], tot, dp[maxn], treez = 0, root;   void dfs(int u, int fa) {     dep[u] = dep[fa] + 1;     f[u][0] = fa;     for (int i = 1; i <= 20; i++) {       f[u][i] = f[f[u][i - 1]][i - 1];     }     for (int i = head[u]; i; i = e[i].next) {       int v = e[i].v;       if (v == fa) continue;       dfs(v, u);       treez = max(treez, dp[u] + dp[v] + 1);       dp[u] = max(dp[u], dp[v] + 1);     }   }   int getlca(int a, int b) {     if (dep[a] < dep[b]) swap(a, b);     for (int i = 20; ~i; i--) {       int x = f[a][i];       if (dep[x] >= dep[b]) a = x;     }     if (a == b) return a;     for (int i = 20; ~i; i--) {       if (f[a][i] != f[b][i]) {         a = f[a][i];         b = f[b][i];       }     }     return f[a][0];   }   int k;   int work(int a, int lca) {     for (int i = 20; ~i; i--) {       if ((1 << i) <= k && dep[f[a][i]] >= dep[lca]) {         a = f[a][i];         k -= (1 << i);       }     }     return a;   }   void solve() {     int n, a, b, da, db;     cin >> n >> a >> b >> da >> db;     for (int i = 1; i <= n; i++) head[i] = 0, dp[i] = 0, dep[i] = 0;     cnt = 0;     treez = 0;     for (int i = 1; i < n; i++) {       int u, v;       cin >> u >> v;       add(u, v);       add(v, u);     }     if (da * 2 >= db) {       puts( Alice );       return;     }     dfs(1, 0);     int lca = getlca(a, b);     if (treez <= da * 2) {       puts( Alice );       return;     }     if (dep[a] + dep[b] - dep[lca] * 2 <= da) {       puts( Alice );       return;     }     puts( Bob );   }   signed main() {     int T = 1;     scanf( %d , &T);     while (T--) solve();   }   