#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-9;
const long long MOD = 1e9 + 7;
vector<int> adj[100100];
int dist(int u, int pr, int dest) {
  if (u == dest) return 0;
  for (int i : adj[u])
    if (i != pr) {
      int t = dist(i, u, dest);
      if (t >= 0) return t + 1;
    }
  return -1;
}
int dfs(int u, int pr, int &res) {
  int dep = 0;
  for (int i : adj[u])
    if (i != pr) {
      int t = dfs(i, u, res);
      t++;
      res = max(res, dep + t);
      dep = max(dep, t);
    }
  return dep;
}
int diameter() {
  int res = 0;
  dfs(0, -1, res);
  return res;
}
void solve() {
  int n, a, b, da, db;
  cin >> n >> a >> b >> da >> db;
  a--, b--;
  for (int i = 0; i < n; i++) adj[i].clear();
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    u--, v--;
    adj[u].push_back(v);
    adj[v].push_back(u);
  }
  if (db <= 2 * da || dist(a, -1, b) <= da || diameter() <= 2 * da) {
    cout << "Alice" << '\n';
  } else
    cout << "Bob" << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout << fixed << setprecision(20);
  mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  int t;
  cin >> t;
  while (t--) solve();
  return 0;
}
