func_code_string: #include <bits/stdc++.h>   using namespace std;   void dfs(long long a, vector<long long>& d, vector<vector<long long>>& adj,            vector<long long>& vis, long long dist) {     d[a] = dist;     vis[a]++;     for (auto b : adj[a]) {       if (!vis[b]) {         dfs(b, d, adj, vis, dist + 1);       }     }   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     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 u, v;         cin >> u >> v;         adj[u].push_back(v);         adj[v].push_back(u);       }       if (da * 2 >= db) {         cout <<  Alice n ;         continue;       }       vector<long long> d(n + 1);       vector<long long> vis(n + 1);       dfs(b, d, adj, vis, 0);       if (d[a] <= da) {         cout <<  Alice n ;         continue;       }       long long mx = 0;       for (long long i = 1; i < n + 1; i++) {         mx = max(mx, d[i]);       }       vector<long long> d2(n + 1);       vector<long long> vis2(n + 1);       for (long long i = 1; i < n + 1; i++) {         if (d[i] == mx) {           dfs(i, d2, adj, vis2, 0);           break;         }       }       long long mx2 = 0;       for (long long i = 1; i < n + 1; i++) {         mx2 = max(mx2, d2[i]);       }       long long di = mx2;       if (di > 2 * da)         cout <<  Bob n ;       else         cout <<  Alice n ;     }     return 0;   }   