#include <bits/stdc++.h>
using namespace std;
int d[200000];
int d2[200000];
int vis[200000];
void dfs(int s, vector<vector<int>> &edges) {
  vis[s] = 1;
  for (auto x : edges[s]) {
    if (vis[x] == 0) {
      d[x] = d[s] + 1;
      dfs(x, edges);
    }
  }
}
void dfs2(int s, vector<vector<int>> &edges) {
  vis[s] = 1;
  for (auto x : edges[s]) {
    if (vis[x] == 0) {
      d2[x] = d2[s] + 1;
      dfs2(x, edges);
    }
  }
}
int diameter(int n, vector<vector<int>> &edges) {
  int p = -1;
  int pd = 0;
  for (int i = 0; i < n; i++) {
    if (pd < d[i]) {
      pd = d[i];
      p = i;
    }
  }
  for (int i = 0; i < n; i++) {
    vis[i] = 0;
  }
  d2[p] = 0;
  dfs2(p, edges);
  p = -1;
  pd = 0;
  for (int i = 0; i < n; i++) {
    if (pd < d2[i]) {
      pd = d2[i];
      p = i;
    }
  }
  return pd;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int tests = 1;
  cin >> tests;
  while (tests--) {
    int n, a, b, da, db;
    cin >> n >> a >> b >> da >> db;
    vector<vector<int>> edges(n);
    int f, s;
    for (int i = 0; i < n - 1; i++) {
      cin >> f >> s;
      edges[f - 1].push_back(s - 1);
      edges[s - 1].push_back(f - 1);
    }
    a--;
    b--;
    d[a] = 0;
    for (int i = 0; i < n; i++) {
      vis[i] = 0;
    }
    dfs(a, edges);
    if (da >= d[b]) {
      cout << "Alice\n";
      continue;
    }
    int dia = diameter(n, edges);
    if (2 * da >= dia || 2 * da >= db) {
      cout << "Alice\n";
      continue;
    }
    cout << "Bob\n";
  }
}
