func_code_string: #include <bits/stdc++.h>   using namespace std;   signed main() {     cin.tie(nullptr)->sync_with_stdio(false);     long long t;     cin >> t;     while (t--) {       long long n, a, b, da, db;       cin >> n >> a >> b >> da >> db;       vector<vector<long long>> adj(n + 1);       for (long long i = 0; i < n - 1; i++) {         long long x, y;         cin >> x >> y;         adj[x].push_back(y);         adj[y].push_back(x);       }       if (true) {         vector<bool> vis(n + 1);         vector<long long> dis(n + 1);         queue<long long> q;         q.push(a);         vis[a] = true;         while (!q.empty()) {           long long cur = q.front();           q.pop();           for (long long nxt : adj[cur]) {             if (!vis[nxt]) {               vis[nxt] = true;               dis[nxt] = dis[cur] + 1;               q.push(nxt);             }           }         }         if (dis[b] <= da) {           cout <<  Alice n ;           continue;         }       }       if (true) {         long long start = 0;         if (true) {           vector<bool> vis(n + 1);           vector<long long> dis(n + 1);           queue<long long> q;           q.push(a);           vis[a] = true;           while (!q.empty()) {             long long cur = q.front();             q.pop();             for (long long nxt : adj[cur]) {               if (!vis[nxt]) {                 vis[nxt] = true;                 dis[nxt] = dis[cur] + 1;                 q.push(nxt);               }             }           }           long long mx = 0;           for (long long i = 1; i <= n; i++) {             if (dis[i] > mx) {               mx = dis[i];               start = i;             }           }         }         if (true) {           vector<bool> vis(n + 1);           vector<long long> dis(n + 1);           queue<long long> q;           q.push(start);           vis[start] = true;           while (!q.empty()) {             long long cur = q.front();             q.pop();             for (long long nxt : adj[cur]) {               if (!vis[nxt]) {                 vis[nxt] = true;                 dis[nxt] = dis[cur] + 1;                 q.push(nxt);               }             }           }           long long dia = 0;           for (long long i = 1; i <= n; i++) {             dia = max(dia, dis[i]);           }           if (da * 2 >= dia) {             cout <<  Alice n ;             continue;           }         }       }       if (da * 2 < db) {         cout <<  Bob n ;       } else {         cout <<  Alice n ;       }     }     return 0;   }   