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");
        }
    }
}

  

posted @ 2017-08-10 22:08  nicetomeetu  阅读(158)  评论(0编辑  收藏  举报