#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
class Graph {
 public:
  vector<vector<int> > adj;
  int n;
  int dab, maxdist, arg;
  vector<bool> seen;
  Graph() {}
  Graph(int nn) {
    n = nn;
    seen.assign(n, false);
    adj.resize(n);
  }
  void add(int a, int b) {
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  void dfs(int a, int b, int dist) {
    if (seen[a]) return;
    seen[a] = true;
    if (a == b) dab = dist;
    if (dist > maxdist) {
      maxdist = dist;
      arg = a;
    }
    for (auto v : adj[a]) {
      dfs(v, b, dist + 1);
    }
  }
  vector<int> dist(int a, int b) {
    dab = 0, maxdist = 0, arg = -1;
    seen.assign(n, false);
    dfs(a, b, 0);
    seen.assign(n, false);
    dfs(arg, -1, 0);
    return vector<int>{dab, maxdist};
  }
};
void solve() {
  int n, a, b, da, db;
  cin >> n >> a >> b >> da >> db;
  a--;
  b--;
  Graph g(n);
  for (int i = (0); i < (n - 1); i++) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    g.add(u, v);
  }
  vector<int> ret = g.dist(a, b);
  int dab = ret[0];
  int dia = ret[1];
  if (dab <= da) {
    cout << "Alice\n";
  } else if (dia <= 2 * da) {
    cout << "Alice\n";
  } else if (db <= 2 * da) {
    cout << "Alice\n";
  } else {
    cout << "Bob\n";
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int _t;
  cin >> _t;
  while (_t--) solve();
}
