HDU 6105 - Gameia | 2017 Multi-University Training Contest 6

时间:2023-03-09 02:39:58
HDU 6105 - Gameia   |  2017 Multi-University Training Contest 6
/*
HDU 6105 - Gameia [ 非平等博弈 ] | 2017 Multi-University Training Contest 6
题意:
Bob 可以把一个点和周围所有点都染黑,还有 k 次割掉一条边的操作
Alice 可以把一个点染白
A先B后,问谁赢
分析:
如果图中不存在两两匹配,则Bob输
每一次两两匹配都需要一次割边,除了最后一次
如果没能力割边,Bob输
*/
#include <bits/stdc++.h>
using namespace std;
int t, n, k;
vector<int> G[505];
bool ans;
int dfs(int x)
{
int s = 1;
for (auto& y : G[x])
s += dfs(y);
if (s == 2) k--;
if (s > 2) ans = 0;
return s % 2;
}
int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i++) G[i].clear();
for (int i = 2; i <= n; i++)
{
int x; scanf("%d", &x);
G[x].push_back(i);
}
if (n&1) puts("Alice");
else
{
ans = 1;
dfs(1);
if (!ans || k < -1) puts("Alice");
else puts("Bob");
}
}
}