提交时间:2024-04-04 21:37:04
运行 ID: 28194
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 49; vector<int> G[N]; int _, n, K, vis[N]; void dfs(int u, int fa) { int cnt = 0; for (int v : G[u]) { if (v == fa) continue; dfs(v, u); if (vis[v] < 0) {cnt = -1; break;} else if (vis[v]) cnt++; } if (cnt > 1 || cnt < 0) vis[u] = -1; else vis[u] = !cnt; } int main() { scanf("%d", &_); while (_--) { scanf("%d%d", &n, &K); for (int i = 1; i <= n; i++) G[i].clear(), vis[i] = 0; for (int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v), G[v].push_back(u); } dfs(1, 0); if (vis[1] || K < (n >> 1) - 1) printf("Alice\n"); else printf("Bob\n"); } return 0; }