#include <bits/stdc++.h>
using namespace std;
using pii = pair<long long, long long>;
vector<long long> adj[100100];
long long b, maxvtx, maxd, initd;
void dfs(long long cur, long long d, long long par) {
  if (cur == b) initd = d;
  if (d > maxd) {
    maxd = d;
    maxvtx = cur;
  }
  for (auto &next : adj[cur]) {
    if (next == par) continue;
    dfs(next, d + 1, cur);
  }
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long TC;
  cin >> TC;
  for (long long tc = 1; tc <= TC; tc++) {
    long long n, a, da, db;
    cin >> n >> a >> b >> da >> db;
    for (long long i = 1; i <= n; i++) adj[i].clear();
    for (long long i = 1; i < n; i++) {
      long long x, y;
      cin >> x >> y;
      adj[x].push_back(y);
      adj[y].push_back(x);
    }
    maxd = 0;
    dfs(a, 0, 0);
    if (initd <= da) {
      cout << "Alice" << '\n';
      continue;
    }
    maxd = 0;
    dfs(maxvtx, 0, 0);
    if (2 * da >= maxd) {
      cout << "Alice" << '\n';
      continue;
    }
    cout << (db > 2 * da ? "Bob" : "Alice") << '\n';
  }
  return 0;
}
