CF2013F2.Game in Tree (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是问题的困难版本。在这一版本中,不要求 u=vu = v。只有当两个版本的问题都成功解决后,你才能进行 hack。

Alice 和 Bob 在一棵树上玩一个有趣的游戏。这棵树有 nn 个顶点,编号从 11 到 nn。回顾一下,一棵有 nn 个顶点的树是一个有 n−1n - 1 条边的无向连通图。

游戏规则是 Alice 和 Bob 轮流移动,Alice 先行动,每位玩家在自己的回合中,必须从当前所在的顶点移动到一个尚未被访问过的相邻顶点。如果某个玩家无法移动,则他输掉比赛。

给定两个顶点 uu 和 vv。从顶点 uu 到顶点 vv 的简单路径用数组表示为 p1,p2,p3,…,pmp_1, p_2, p_3, \ldots, p_m,其中 p1=up_1 = u,pm=vp_m = v,并且每对相邻的顶点 pip_i 和 pi+1p_{i+1}之间都有一条边(1≤i<m1 \le i < m)。

你的任务是,判断在 Alice 从顶点 11 开始,而 Bob 从路径中的顶点 pjp_j(1≤j≤m1 \le j \le m)开始的情况下,谁将获胜。

输入格式

输入包含多个测试用例。第一行为测试用例的数量 tt(1≤t≤1041 \le t \le 10^4)。接下来每个测试用例进行描述。

每个测试用例的第一行是一个整数 nn(2≤n≤2⋅1052 \le n \le 2 \cdot 10^5),表示树中顶点的个数。

接下来的 n−1n - 1 行,每行包含两个整数 aa 和 bb(1≤a,b≤n1 \le a, b \le n),表示顶点 aa 和 bb 之间连接着一条无向边。这些边保证组成一棵树。

测试用例的最后一行包含两个整数 uu 和 vv(2≤u,v≤n2 \le u, v \le n),保证从 uu 到 vv 的路径不通过顶点 11。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出 mm 行。

在第 ii 行输出结果,如果 Alice 从顶点 11 开始而 Bob 从顶点 pip_i 开始时,游戏的赢家是谁。如果 Alice 赢,则输出“Alice”;否则输出“Bob”。

输入输出样例

  • 输入#1

    3
    3
    1 2
    2 3
    2 3
    6
    1 2
    1 3
    2 4
    2 5
    1 6
    4 5
    4
    1 2
    1 3
    2 4
    2 4

    输出#1

    Bob
    Alice
    Alice
    Bob
    Alice
    Bob
    Alice

说明/提示

在第一个例子中,路径是(2,32, 3)。如果 Bob 开始时位于顶点 22,Alice 在第一回合就无法移动,只能输掉比赛。而如果 Bob 从顶点 33 开始,Alice 会移动到顶点 22,此时 Bob 就没有顶点可动并会输掉比赛。

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页