#include <bits/stdc++.h>
using namespace std;
int64_t n, a, b, da, db, c, d;
vector<int> v[100005];
bool dis(int x, int p, int d) {
  if (x == b) return d <= da;
  bool ans = false;
  for (auto i : v[x])
    if (i != p) ans |= dis(i, x, d + 1);
  return ans;
}
int maxDis(int x, int p) {
  int d = 0;
  for (auto i : v[x])
    if (i != p) d = max(d, maxDis(i, x));
  return d + 1;
}
int findNode(int x, int p, int d, int req) {
  if (d == req) return x;
  int found;
  for (auto i : v[x])
    if (i != p) {
      found = findNode(i, x, d + 1, req);
      if (found != -1) return found;
    }
  return -1;
}
int diameter() {
  int w = maxDis(1, -1);
  int node = findNode(1, -1, 0, w - 1);
  return maxDis(node, -1) - 1;
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> a >> b >> da >> db;
    for (int i = 1; i < n; i++) {
      cin >> c >> d;
      v[d].push_back(c);
      v[c].push_back(d);
    }
    if (db < 2 * da + 1)
      cout << "Alice\n";
    else if (dis(a, -1, 0))
      cout << "Alice\n";
    else if (diameter() < 2 * da + 1)
      cout << "Alice\n";
    else
      cout << "Bob\n";
    for (int i = 1; i <= n; i++) v[i].clear();
  }
  return 0;
}
