#include <bits/stdc++.h>
using namespace std;
const int maxn = 7e5 + 10;
vector<int> G[maxn];
int dis[maxn];
void dfs(int s, int fa) {
  dis[s] = dis[fa] + 1;
  for (int d : G[s]) {
    if (d == fa) {
      continue;
    }
    dfs(d, s);
  }
}
void solve() {
  long long n, a, b, da, db;
  cin >> n >> a >> b >> da >> db;
  for (int i = 0; i <= n; i++) {
    G[i].clear();
  }
  for (int i = 1; i < n; i++) {
    int s, d;
    scanf("%d %d", &s, &d);
    G[s].push_back(d);
    G[d].push_back(s);
  }
  dis[0] = -1;
  dfs(a, 0);
  int disb = dis[b];
  if (disb <= da) {
    cout << "Alice\n";
    return;
  }
  int rootid = 0;
  for (int i = 1; i <= n; i++) {
    if (dis[i] > dis[rootid]) {
      rootid = i;
    }
  }
  dfs(rootid, 0);
  int maxdis = 0;
  for (int i = 1; i <= n; i++) {
    maxdis = (maxdis > dis[i] ? maxdis : dis[i]);
  }
  if (maxdis <= da * 2) {
    cout << "Alice\n";
    return;
  }
  if (db >= da * 2 + 1) {
    cout << "Bob\n";
    return;
  }
  cout << "Alice\n";
}
int main() {
  int T;
  cin >> T;
  while (T--) solve();
}
