#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;
}
