QOJ.ac

QOJ

Límite de tiempo: 0.5 s Límite de memoria: 512 MB Puntuación total: 100 Hackeable ✓

#8295. 二叉树

Estadísticas

在计算机科学中,二叉树是一种每个节点最多有两个子节点的有根树。在本题中,设 $n$ 为节点数,$l$ 为叶子节点数,$h$ 为树的高度(仅包含一个根节点的树高度为 0)。

Alice 和 Bob 正在玩一个关于二叉树的游戏。在这个游戏中,Alice 和 Bob 拥有一棵以节点 1 为根的二叉树。他们轮流对树进行操作,Alice 先手。在每次操作中,当前玩家必须选择一个节点 $p$(可以选择包括根节点在内的任意节点),并从树中移除以 $p$ 为根的子树。显然,剩余的图(如果非空)仍然是一棵二叉树。然后他们继续对剩余的树进行游戏。为了增加游戏的趣味性,对可以选择的节点 $p$ 有一个限制:以 $p$ 为根的子树(即要移除的子树)必须是一棵完美满二叉树。注意,完美满二叉树是指所有内部(非叶)节点都有两个子节点,且所有叶子节点深度相同的二叉树。可以很容易地证明,在完美满二叉树中,等式 $l = 2^h$ 成立,等式 $n = 2^{h+1} - 1$ 也成立。特别地,仅由一个根节点组成的树也是一棵完美满二叉树。当玩家无法进行合法操作时,游戏结束,该玩家输,即另一方获胜。

三棵完美满二叉树的示例。

Alice 和 Bob 都非常聪明,总是采取最优策略。你能确定谁会赢得游戏吗?

输入格式

输入包含多个测试用例。输入的第一行包含一个正整数 $T$,表示测试用例的数量。

对于每个测试用例,第一行包含一个整数 $n$ ($1 \le n \le 5\,000$),表示二叉树的节点数。接下来的 $n - 1$ 行,每行包含两个整数 $x, y$ ($1 \le x \le n, 1 \le y \le n$),表示节点 $x$ 和 $y$ 之间的一条边。保证输入图是以节点 1 为根的二叉树。

保证所有测试用例的 $n$ 之和不超过 $50\,000$。

输出格式

对于每个测试用例,如果 Alice 会赢得游戏,则在一行中输出字符串 “Alice”,否则输出字符串 “Bob”。

样例

输入 1

1
5
1 2
1 3
3 4
3 5

输出 1

Alice

说明

在样例中,Alice 在第一回合移除了以节点 3 为根的子树。然后 Bob 只能选择 $p = 2$,这使得 Alice 只剩下根节点 1。因为仅由一个根节点组成的树是一棵完美满二叉树,Alice 可以移除剩下的唯一节点并赢得游戏。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.