#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
vector<vector<int> > adj(N, vector<int>());
vector<int> bfs(int u, int n) {
  vector<bool> used(n + 1, false);
  vector<int> d(n + 1, 0);
  queue<int> q;
  q.push(u);
  used[u] = true;
  while (!q.empty()) {
    u = q.front();
    q.pop();
    for (auto to : adj[u]) {
      if (!used[to]) {
        d[to] = d[u] + 1;
        used[to] = true;
        q.push(to);
      }
    }
  }
  return d;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int tt;
  cin >> tt;
  while (tt--) {
    int n, a, b, da, db;
    cin >> n >> a >> b >> da >> db;
    for (int i = 1; i <= n; i++) adj[i].clear();
    for (int i = 0; i < n - 1; i++) {
      int u, v;
      cin >> u >> v;
      adj[u].push_back(v);
      adj[v].push_back(u);
    }
    vector<int> d = bfs(a, n);
    int x = d[b];
    d = bfs(max_element(d.begin(), d.end()) - d.begin(), n);
    int mx = *max_element(d.begin(), d.end());
    if (x <= da) {
      cout << "Alice\n";
    } else {
      db = min(db, mx);
      if (db > 2 * da) {
        cout << "Bob\n";
      } else
        cout << "Alice\n";
    }
  }
}
