#include <bits/stdc++.h>
using namespace std;
vector<int> g[1000005];
long long int en, mx, dis1[1000005], dis2[1000005];
bool vis1[1000005], vis2[1000005];
int main(void) {
  {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
  };
  long long int t, i, n, a, b, da, db, x, y;
  cin >> t;
  while (t--) {
    cin >> n >> a >> b >> da >> db;
    for (i = 0; i <= n; i++) {
      g[i].clear();
      dis1[i] = 0;
      dis2[i] = 0;
      vis1[i] = 0;
      vis2[i] = 0;
      mx = 0;
    }
    for (i = 0; i < n - 1; i++) {
      cin >> x >> y;
      g[x].push_back(y);
      g[y].push_back(x);
    }
    queue<long long int> q;
    q.push(a);
    while (!q.empty()) {
      long long int k = q.front();
      q.pop();
      vis1[k] = 1;
      for (auto x : g[k]) {
        if (vis1[x]) continue;
        q.push(x);
        dis1[x] = dis1[k] + 1;
        vis1[x] = 1;
        if (dis1[x] > mx) {
          mx = dis1[x];
          en = x;
        }
      }
    }
    q.push(en);
    while (!q.empty()) {
      long long int k = q.front();
      q.pop();
      vis2[k] = 1;
      for (auto x : g[k]) {
        if (vis2[x]) continue;
        q.push(x);
        dis2[x] = dis2[k] + 1;
        vis2[x] = 1;
        if (dis2[x] > mx) mx = dis2[x];
      }
    }
    if (dis1[b] <= da)
      cout << "Alice" << endl;
    else {
      if (2 * da >= mx)
        cout << "Alice" << endl;
      else {
        if (db > 2 * da)
          cout << "Bob" << endl;
        else
          cout << "Alice" << endl;
      }
    }
  }
}
