#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
vector<int> v[maxn];
int mx, dis;
int n, w1, w2, p1, p2;
int dfs(int x, int fa, int deep) {
  if (x == w2) dis = deep;
  if (v[x].size() == 1 && v[x][0] == fa) return 1;
  int m1 = 0, m2 = 0;
  for (int i = 0; i < v[x].size(); i++) {
    if (v[x][i] == fa) continue;
    int d = dfs(v[x][i], x, deep + 1);
    if (m1 < d) {
      m2 = m1;
      m1 = d;
    } else if (m2 < d)
      m2 = d;
  }
  mx = max(mx, m1 + m2);
  return m1 + 1;
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> w1 >> w2 >> p1 >> p2;
    for (int i = 1; i <= n; i++) v[i].clear();
    for (int i = 1; i < n; i++) {
      int x, y;
      scanf("%d%d", &x, &y);
      v[x].push_back(y);
      v[y].push_back(x);
    }
    if (p1 * 2 >= p2)
      printf("Alice\n");
    else {
      mx = 0;
      dfs(w1, -1, 0);
      if (mx <= p1 * 2 || dis <= p1)
        printf("Alice\n");
      else
        printf("Bob\n");
    }
  }
  return 0;
}
