#include <bits/stdc++.h>
using namespace std;
vector<int> G[100005];
int n, a, b, da, db;
void dfs(int x, int p, int d, int& dist) {
  if (x == b) {
    dist = d;
    return;
  }
  if (dist != -1) {
    return;
  }
  for (int i = 0; i < G[x].size(); i++) {
    int to = G[x][i];
    if (to != p) dfs(to, x, d + 1, dist);
  }
}
void dia(int x, int p, int d, int& d1, int& nx) {
  if (d1 <= d) {
    d1 = d;
    nx = x;
  }
  for (int i = 0; i < G[x].size(); i++) {
    int to = G[x][i];
    if (to != p) dia(to, x, d + 1, d1, nx);
  }
}
void solve() {
  cin >> n >> a >> b >> da >> db;
  for (int i = 1; i <= n; i++) G[i].clear();
  for (int i = 1; i <= n - 1; i++) {
    int x, y;
    cin >> x >> y;
    G[x].push_back(y);
    G[y].push_back(x);
  }
  int dist = -1, d1 = 0, d2 = 0, na, temp;
  dfs(a, 0, 0, dist);
  dia(a, 0, 0, d1, na);
  dia(na, 0, 0, d2, temp);
  if (da >= dist) {
    cout << "Alice" << endl;
  } else if (2 * da >= d2) {
    cout << "Alice" << endl;
  } else if (db > 2 * da) {
    cout << "Bob" << endl;
  } else if (db <= 2 * da) {
    cout << "Alice" << endl;
  }
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    solve();
  }
}
