#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
vector<int> g[N];
int dep[N];
int n, a, b, da, db;
void Dfs(int v, int p = -1) {
  for (int to : g[v]) {
    if (to != p) {
      dep[to] = dep[v] + 1;
      Dfs(to, v);
    }
  }
}
bool test_case() {
  dep[b] = 0;
  Dfs(b);
  if (dep[a] <= da) return true;
  int v = max_element(dep, dep + n) - dep;
  dep[v] = 0;
  Dfs(v);
  int diam = *max_element(dep, dep + n);
  return (2 * da >= min(diam, db));
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int tt;
  cin >> tt;
  while (tt--) {
    cin >> n >> a >> b >> da >> db;
    --a;
    --b;
    for (int i = 0; i < n; i++) g[i].clear();
    for (int i = 0; i < n - 1; i++) {
      int x, y;
      cin >> x >> y;
      --x;
      --y;
      g[x].push_back(y);
      g[y].push_back(x);
    }
    cout << (test_case() ? "Alice" : "Bob") << '\n';
  }
  return 0;
}
