HDU 6105 Gameia

来源:互联网 发布:江苏扬州淘宝店 编辑:程序博客网 时间:2024/05/01 22:13

题目链接

题目意思

Bob和Alice玩游戏,要将一颗没有颜色的树进行涂色。Alice先走,图白色,Bob图黑色,并且可以将与它直接相连的点染成黑色,不管这点以前是空白的还是白色的。由于Bob是VIP玩家,可以随时在游戏中切断一条边。

解题思路

只有当n为偶数且Bob可以根据他的特权将这棵树切成两两相连的时候,才可以获得胜利,否则都是Alice赢。

代码部分

#include <bits/stdc++.h>using namespace std;const int maxn = 1e3;int main(){    int t;    cin >> t;    while(t --)    {        int n, k, father[maxn], size[maxn];///size表示当前节点的子节点个数        bool flag = true;        cin >> n >> k;        for(int i = 2; i <= n; ++ i)            cin >> father[i];        for(int i = 1; i <= n; ++ i)            size[i] = 1;        for(int i = n; i >= 1; -- i)        {            if(size[i] >= 3)                flag = false;            size[father[i]] += size[i] & 1;        }        if(flag && n % 2 == 0 && k >= n / 2 - 1)            cout << "Bob" << endl;        else            cout << "Alice" << endl;    }    return 0;}
原创粉丝点击