题目链接

Problem Description

Alice and Bob are playing a game called 'Gameia ? Gameia !'. The game goes like this :

0. There is a tree with all node unpainted initial.

  1. Because Bob is the VIP player, so Bob has K chances to make a small change on the tree any time during the game if he wants, whether before or after Alice's action. These chances can be used together or separate, changes will happen in a flash. each change is defined as cut an edge on the tree.
  2. Then the game starts, Alice and Bob take turns to paint an unpainted node, Alice go first, and then Bob.
  3. In Alice's move, she can paint an unpainted node into white color.
  4. In Bob's move, he can paint an unpainted node into black color, and what's more, all the other nodes which connects with the node directly will be painted or repainted into black color too, even if they are white color before.
  5. When anybody can't make a move, the game stop, with all nodes painted of course. If they can find a node with white color, Alice win the game, otherwise Bob.

    Given the tree initial, who will win the game if both players play optimally?

Input

The first line of the input gives the number of test cases T; T test cases follow.

Each case begins with one line with two integers N and K : the size of the tree and the max small changes that Bob can make.

The next line gives the information of the tree, nodes are marked from 1 to N, node 1 is the root, so the line contains N-1 numbers, the i-th of them give the farther node of the node i+1.

Limits

T≤100

1≤N≤500

0≤K≤500

1≤Pi≤i

Output

For each test case output one line denotes the answer.

If Alice can win, output "Alice" , otherwise "Bob".

Sample Input

2

2 1

1

3 1

1 2

Sample Output

Bob

Alice

题意:

Alice和Bob玩一个游戏,一开始有一颗有n个节点并且没有颜色的树,Bob和Alice分别对树上的节点进行染色,Alice每次将一个没有颜色的点涂成白色,Bob每次将一个没有颜色的点涂成黑色,并且可以将与涂上黑色的这个点直接相邻的点变为黑色,假如最后树被涂满之后还存在白色点,Alice赢,否则Bob赢。Bob还有一个特权,可以在任意时候,删除任意一条边,这样的特权可以使用k次。

分析:

首先当有一条长度大于等于3的链的时候,Alice一定可以获胜。可以找出来3 和 4 的时候这个结论是成立的。(3的时候先染中间那个点,4的时候先染最后一个点)当长度大于4的时候,Alice可以染倒数第二个点,那么Bob只能染最后一个点,否则他必输。这样就相当于将链的长度减小了2。那么接下去一定会变成3或4的链,Alice必胜。

实际上如果一个相连通的点集元素大于等于3的时候,Alice都是必胜的。因为如果是一棵树Alice可以用上述方式,每次染一个叶子节点的父节点,Bob只能染这个叶子结点。那么最后就会化成链或者只剩一个节点,那么她必胜。

对于一个节点连同它所有的子节点的个数如果是奇数的话,那么这样无论如何Alice都会赢,每次Alice先染白一个点,然后每次Bob涂的时候只有涂这个节点的子节点才能将这个节点再涂成黑色,这样他俩一轮下来只能涂两个,这样下来即使每个节点都是有两个子节点,最后被涂成白色的子节点个数最多为n/2-1个。

如果Bob的特权次数小于这个数的话,必然也是Alice赢。

如果为偶数的话,并且可以将这个树划分为所有都是只有两个点相连的话,Bob赢。

代码:

#include<stdio.h>
#include<vector>
using namespace std;
vector<int>vt[505];
int size[505];
int flag=0; void dfs(int u)
{
int num=0;///奇数节点的个数
size[u]=1;
for(int i=0; i<vt[u].size(); i++)///递归所有的子节点
{
int to=vt[u][i];
dfs(to);
size[u]+=size[to];
if(size[to]%2==1)num++;///为奇数的节点(包括单独的叶子节点),Alice回赢
}
if(num>=2)flag=1;///这样的话也就相当于只有有两个节点的话,Bob才会赢
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
for(int i=0; i<505; i++)vt[i].clear();
int n,k;
scanf("%d%d",&n,&k);
for(int i=2; i<=n; i++)
{
int f;
scanf("%d",&f);
vt[f].push_back(i);
}
flag=0;
if(n%2==1||n/2-1>k)///奇数个或者特权数不够用,必定Alice赢
printf("Alice\n");
else///节点个数为偶数个并且特权个数足够用
{
dfs(1);
if(flag==1)
printf("Alice\n");
else
printf("Bob\n");
}
}
}

2017ACM暑期多校联合训练 - Team 6 1010 HDU 6105 Gameia (博弈)的更多相关文章

  1. 2017ACM暑期多校联合训练 - Team 9 1010 HDU 6170 Two strings (dp)

    题目链接 Problem Description Giving two strings and you should judge if they are matched. The first stri ...

  2. 2017ACM暑期多校联合训练 - Team 7 1010 HDU 6129 Just do it (找规律)

    题目链接 Problem Description There is a nonnegative integer sequence a1...n of length n. HazelFan wants ...

  3. 2017ACM暑期多校联合训练 - Team 4 1004 HDU 6070 Dirt Ratio (线段树)

    题目链接 Problem Description In ACM/ICPC contest, the ''Dirt Ratio'' of a team is calculated in the foll ...

  4. 2017ACM暑期多校联合训练 - Team 9 1005 HDU 6165 FFF at Valentine (dfs)

    题目链接 Problem Description At Valentine's eve, Shylock and Lucar were enjoying their time as any other ...

  5. 2017ACM暑期多校联合训练 - Team 8 1006 HDU 6138 Fleet of the Eternal Throne (字符串处理 AC自动机)

    题目链接 Problem Description The Eternal Fleet was built many centuries ago before the time of Valkorion ...

  6. 2017ACM暑期多校联合训练 - Team 8 1002 HDU 6134 Battlestation Operational (数论 莫比乌斯反演)

    题目链接 Problem Description The Death Star, known officially as the DS-1 Orbital Battle Station, also k ...

  7. 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)

    题目链接 Problem Description Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith ...

  8. 2017ACM暑期多校联合训练 - Team 8 1008 HDU 6140 Hybrid Crystals (模拟)

    题目链接 Problem Description Kyber crystals, also called the living crystal or simply the kyber, and kno ...

  9. 2017ACM暑期多校联合训练 - Team 7 1009 HDU 6128 Inverse of sum (数学计算)

    题目链接 Problem Description There are n nonnegative integers a1-n which are less than p. HazelFan wants ...

随机推荐

  1. Centos7更改默认启动桌面(或命令行)模式

    centos7以后是这样的,7以前就是别的版本了 1.systemctl get-default命令获取当前模式 2.systemctl set-default graphical.target 修改 ...

  2. python接口自动化测试框架实现之字符串插入变量(字符串参数化)

    问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...

  3. PHP中普通属性和静态属性

    普通属性(实例属性): 实例的单词为:instance 实例,其实也叫做“对象”: 普通(实例)属性,就是一个可以在该类实例化出的对象上使用的属性! 定义形式: class  类名{ var  $属性 ...

  4. 【EF】Entity Framework Core 命名约定

    本文翻译自<Entity Framework Core: Naming Convention>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意:我使用的是 Entity ...

  5. C++解析(10):struct和class的区别

    0.目录 1.默认访问级别 2.默认继承方式 2.1 分别独立继承 2.2 struct继承class 2.3 class继承struct 3.小结 1.默认访问级别 在用struct定义类时,所有成 ...

  6. Ajax请求会话过期处理(JS)

    对于页面来说,处理session过期比较简单,一般只需在过滤器里面判断session用户是否存在,不存在则跳转页面到登陆页即可. 对于Ajax请求来说,这个办法则无效,只能获取到登录页的html代码. ...

  7. 洛谷 P3345 [ZJOI2015]幻想乡战略游戏 解题报告

    P3345 [ZJOI2015]幻想乡战略游戏 题目描述 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做 ...

  8. 代码收藏系列--javascript--移动端技巧

    JS判断是否是手机端访问: var is_mobi = navigator.userAgent.toLowerCase().match(/(ipod|iphone|android|coolpad|mm ...

  9. Python3 字典 pop() 方法

     Python3 字典 描述 Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值.key值必须给出. 否则,返回default值. 语法 pop()方法语法: ...

  10. iframe在ios上不能滚动问题解决

    同这篇文章一样,用到了-webkit-overflow-scrolling: touch;属性.主要解决方案是在iframe外层添加一个div,然后设置-webkit-overflow-scrolli ...