#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e9 + 7;
const double PI = acos(-1);
const long long MOD = 1e9 + 7;
using namespace std;
int n, a, b, da, db, peso[360000], parent[360000];
vector<int> g[360000];
bool llegamos = 0, bob = 0;
void dfs(int u, int pa, int depth, int ele) {
  if (ele) {
    parent[u] = pa;
    peso[u] = depth;
  } else {
    if (peso[u] > da && depth <= db) {
      bob = 1;
    }
  }
  if (u == b && depth <= da) {
    llegamos = 1;
  }
  for (int w : g[u]) {
    if (w == pa) continue;
    dfs(w, u, depth + 1, ele);
  }
}
pair<long long, long long> dfs0(int u, int pa, int depth) {
  pair<long long, long long> maxx = {0, u};
  for (int w : g[u]) {
    if (w == pa) continue;
    auto par = dfs0(w, u, depth + 1);
    par.first++;
    maxx = max(maxx, par);
  }
  return maxx;
}
void solve() {
  cin >> n >> a >> b >> da >> db;
  for (long long i = 0; i < n + 20; i++) g[i].clear();
  int iz, der;
  for (long long i = 0; i < n - 1; i++) {
    cin >> iz >> der;
    g[iz].push_back(der);
    g[der].push_back(iz);
  }
  llegamos = bob = 0;
  dfs(a, a, 0, 1);
  if (llegamos) {
    cout << "Alice\n";
    return;
  }
  if (2 * da >= db) {
    cout << "Alice\n";
    return;
  }
  auto par = dfs0(1, 1, 0);
  par = dfs0(par.second, par.second, 0);
  if ((par.first + 1) / 2 <= da)
    cout << "Alice\n";
  else
    cout << "Bob\n";
}
int main() {
  int casos;
  cin >> casos;
  while (casos--) {
    solve();
  }
}
