HDU6105(博弈题,非酋得不到救赎)

来源:互联网 发布:python 获取 roe 编辑:程序博客网 时间:2024/06/05 04:31

不能有下图的那种情况这里写图片描述,即不能同时有两个叶子结点。
将树切分看看对应的k够不够用,然后就可以输出答案了
这里写图片描述
code:

#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>//a&3==a%4using namespace std;#define ll long long#define mem(a) memset(a,0,sizeof(a))const double eps=1e-8;const int maxn=1000;//须填写const int inf=0x3f3f3f3f;int fa[maxn];int siz[maxn];int main(){    int kase;    int n,k;    bool flag;    scanf("%d",&kase);    while(kase--)    {        mem(siz);        mem(fa);        flag=true;        scanf("%d%d",&n,&k);        for(int i=2;i<=n;i++)            scanf("%d",fa+i);        for(int i=1;i<=n;i++)            siz[i]=1;        for(int i=n;i>=1;i--)        {            if(siz[i]>=3)                flag=false;            siz[fa[i]]+=(siz[i]%2);        }        if(flag&&n%2==0&&k>=(n/2-1))            cout << "Bob" << endl;        else            cout << "Alice" << endl;    }    return 0;}
原创粉丝点击