func_code_string: #include <bits/stdc++.h>   using namespace std;   long long L[100005];   long long P[100005][40];   long long T[100005];   vector<long long> graph[100005];   long long mx = 0, hh;   void dfs(long long src, long long par) {     if (src == -1)       L[par] = 0;     else       L[par] = L[src] + 1;     if (mx < L[par]) {       hh = par;       mx = max(mx, L[par]);     }     T[par] = src;     long long len = graph[par].size();     for (long long i = 0; i < (long long)graph[par].size(); i++) {       long long v = graph[par][i];       if (v != src) {         dfs(par, v);       }     }   }   void dfs1(long long src, long long par) {     if (src == -1)       L[par] = 0;     else       L[par] = L[src] + 1;     if (mx < L[par]) {       hh = par;       mx = max(mx, L[par]);     }     long long len = graph[par].size();     for (long long i = 0; i < (long long)graph[par].size(); i++) {       long long v = graph[par][i];       if (v != src) {         dfs1(par, v);       }     }   }   int main() {     long long i, j, n, m, t, a, b, c, d, e, f, x, y;     scanf( %lld , &t);     for (long long cz = 0; cz < t; cz++) {       scanf( %lld%lld%lld%lld%lld , &n, &a, &b, &c, &d);       for (i = 0; i < n - 1; i++) {         scanf( %lld%lld , &x, &y);         graph[x].push_back(y);         graph[y].push_back(x);       }       mx = 0;       dfs(-1, a);       long long cc, dd;       cc = L[b];       for (i = 0; i <= n; i++) {         L[i] = 0;       }       mx = 0;       dfs1(-1, hh);       if (c * 2 >= min(d, mx) || cc <= c) {         printf( Alice n );       } else         printf( Bob n );       for (i = 0; i <= n; i++) {         graph[i].clear();         L[i] = 0;       }     }   }   