#include <bits/stdc++.h>
using namespace std;
void DFS(int n, int p, int d, vector<vector<int>> &G, vector<int> &D) {
  for (int nn : G[n]) {
    if (nn == p) continue;
    D[nn] = d + 1;
    DFS(nn, n, d + 1, G, D);
  }
}
void solve() {
  int n, a, b, da, db;
  cin >> n >> a >> b >> da >> db;
  a--;
  b--;
  vector<vector<int>> G(n, vector<int>());
  for (int i = 0; i < n - 1; i++) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    G[u].push_back(v);
    G[v].push_back(u);
  }
  vector<int> Da(n, 0);
  DFS(a, -1, 0, G, Da);
  if (Da[b] <= da) {
    cout << "Alice\n";
    return;
  }
  int mx = -1, mi = -1;
  for (int i = 0; i < n; i++) {
    if (mx < Da[i]) {
      mx = Da[i];
      mi = i;
    }
  }
  vector<int> D(n, 0);
  DFS(mi, -1, 0, G, D);
  int dd = *max_element(D.begin(), D.end());
  db = min(dd, db);
  if (db >= 2 * da + 1) {
    cout << "Bob\n";
  } else {
    cout << "Alice\n";
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int t;
  cin >> t;
  for (int i = 0; i < t; i++) solve();
}
