#include <bits/stdc++.h>
using namespace std;
vector<long long> edg[1000010];
long long dp[1000010], vis[1000010];
long long n, a, b, da, db;
long long bfs(long long sou) {
  dp[sou] = 0;
  for (long long i = 1; i < n + 1; i++) vis[i] = 0;
  vis[sou] = 1;
  queue<long long> q;
  q.push(sou);
  while (q.size()) {
    long long u = q.front();
    q.pop();
    for (auto&& v : edg[u])
      if (!vis[v]) vis[v] = 1, q.push(v), dp[v] = dp[u] + 1;
  }
  long long ans = sou;
  for (long long i = 1; i < n + 1; i++)
    if (dp[ans] < dp[i]) ans = i;
  return ans;
}
long long solve() {
  cin >> n >> a >> b >> da >> db;
  for (long long i = 1; i < n + 1; i++) edg[i].clear();
  for (long long i = 0; i < n - 1; i++) {
    long long x, y;
    cin >> x >> y;
    edg[x].push_back(y);
    edg[y].push_back(x);
  }
  if (db <= da * 2) return 1;
  long long neki = bfs(a);
  if (dp[b] <= da) return 1;
  if (dp[bfs(neki)] <= 2 * da) return 1;
  return 0;
}
int main() {
  long long t;
  cin >> t;
  for (long long i = 0; i < t; i++) {
    if (solve())
      cout << "Alice" << endl;
    else
      cout << "Bob" << endl;
  }
}
