Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
28180 gaochunzhen 【BJ】T2 C++ 解答错误 10 1 MS 264 KB 2352 2024-04-04 17:59:55

Tests(2/20):


#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 49; vector<int> G[N]; int _, n, K, deg[N], siz[N], tmp[N]; void dfs(int u, int fa) { siz[u] = 1; for (int v : G[u]) { if (v == fa) continue; dfs(v, u), siz[u] += siz[v]; } } int main() { srand(time(0)); scanf("%d", &_); while (_--) { scanf("%d%d", &n, &K); for (int i = 1; i <= n; i++) G[i].clear(), deg[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); deg[u]++, deg[v]++; } if (n == 4 || n == 3) assert(0); if (n == 1) { printf("Alice\n"); continue; } else if (n == 2) { printf("Bob\n"); continue; } else if (n == 3) { printf("Alice\n"); continue; } else if (n == 4) { int fl = 0; for (int i = 1; i <= 4; i++) { if (G[i].size() == 3) fl = 1; } if (fl || !K) printf("Alice\n"); else printf("Bob\n"); continue; } else if (n == 6) { int fl = 0; for (int i = 1; i <= n; i++) if (deg[i] > 2) {fl = 1; break;} if (!fl) { if (K < 2) printf("Alice\n"); else printf("Bob\n"); continue; } else { for (int i = 1; i <= n; i++) { if (deg[i] == 3) {fl = i; break;} } if (!fl) {printf("Alice\n"); continue;} dfs(fl, 0); int tp = 0; for (int i : G[fl]) tmp[++tp] = siz[i]; sort(tmp + 1, tmp + tp + 1); if (tmp[1] == 1 && tmp[2] == 2 && tmp[3] == 2 && K >= 2) { printf("Bob\n"); } else printf("Alice\n"); } continue; } if (n & 1) printf("Alice\n"); else { int fl = 0; for (int i = 1; i <= n; i++) if (deg[i] > 2) {fl = 1; break;} if (fl || K < n / 2 - 1) printf("Alice\n"); else printf("Bob\n"); } } return 0; }


测评信息: