#include <bits/stdc++.h>
using namespace std;
int t, n, a, b, da, db, vv, uu, bo[100001];
vector<int> v[100001];
struct p {
  int a, t;
} e;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> t;
  while (t--) {
    cin >> n >> a >> b >> da >> db;
    bo[n] = 0;
    for (int i = 1; i <= n; i++) v[i].clear();
    for (int i = 1; i < n; i++)
      cin >> vv >> uu, v[vv].push_back(uu), v[uu].push_back(vv), bo[i] = 0;
    if (da * 2 < db) {
      int u, d;
      queue<p> q;
      e.a = a, e.t = 0;
      bo[a] = 1;
      q.push(e);
      while (q.size()) {
        if (q.front().a == b) d = q.front().t;
        for (int i = 0; i < v[q.front().a].size(); i++)
          if (!bo[v[q.front().a][i]])
            e.a = v[q.front().a][i], e.t = q.front().t + 1, q.push(e),
            bo[v[q.front().a][i]] = 1;
        u = q.front().a;
        q.pop();
      }
      if (d <= da)
        cout << "Alice\n";
      else {
        e.a = u, e.t = 0;
        bo[u] = 0;
        q.push(e);
        while (q.size()) {
          for (int i = 0; i < v[q.front().a].size(); i++)
            if (bo[v[q.front().a][i]])
              e.a = v[q.front().a][i], e.t = q.front().t + 1, q.push(e),
              bo[v[q.front().a][i]] = 0;
          d = q.front().t;
          q.pop();
        }
        if (da * 2 >= d)
          cout << "Alice\n";
        else
          cout << "Bob\n";
      }
    } else
      cout << "Alice\n";
  }
}
