CF1943C.Tree Compass

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定一棵有 nn 个顶点的树,顶点编号为 1,2,…,n1, 2, \ldots, n。初始时,所有顶点均为白色。

你可以进行如下两步操作:

  1. 选择一个顶点 vv(1≤v≤n1 \leq v \leq n)和一个距离 dd(0≤d≤n−10 \leq d \leq n-1)。
  2. 对所有满足 dist†(u,v)=d\text{dist}^\dagger(u,v)=d 的顶点 uu(1≤u≤n1 \leq u \leq n),将其染成黑色。

请构造一组操作序列,使得用最少的操作次数将树中所有节点都染成黑色。可以证明,最多只需 nn 次操作一定可以完成。

†^\dagger 其中 dist(x,y)\text{dist}(x, y) 表示树上顶点 xx 和 yy 之间唯一简单路径上的边数。

输入格式

每个测试点包含多组测试用例。第一行包含一个整数 tt(1≤t≤2001 \leq t \leq 200),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤2⋅1031 \le n \le 2 \cdot 10^3),表示树的顶点数。

接下来的 n−1n-1 行,每行包含两个整数 uiu_i 和 viv_i(1≤ui,vi≤n1 \le u_i, v_i \le n,ui≠viu_i \neq v_i),表示树中的一条边连接了顶点 uiu_i 和 viv_i。

保证给定的边构成一棵树。

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

输出格式

对于每个测试用例,首先输出一个整数 opop(1≤op≤n1 \le op \le n),表示染黑所有顶点所需的最小操作次数。

接下来输出 opop 行,每行包含两个整数,分别表示第 ii 次操作选择的 vv 和 dd(1≤v≤n1 \le v \le n,0≤d≤n−10 \le d \le n-1)。

你需要保证在 opop 次操作后,所有顶点都被染成黑色。

如果有多种方案,可以输出任意一种。

输入输出样例

  • 输入#1

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

    输出#1

    1
    1 0
    2
    1 1
    2 1
    2
    1 1
    2 1
    3
    6 1
    7 1
    2 1

说明/提示

在第一个测试用例中,只有一种可能的操作,执行后即可得到一个合法答案。

在第二个测试用例中,第一次操作将顶点 22 染黑,第二次操作将顶点 11 染黑。可以证明无法通过一次操作将两个顶点都染黑,因此最少需要 22 次操作。另一种可行方案是两次操作分别为 (u,r)=(1,0)(u, r) = (1, 0) 和 (u,r)=(2,0)(u, r) = (2, 0)。

在第三个测试用例中,第一次操作将顶点 22、33 和 44 染黑,第二次操作将顶点 11 染黑。同样可以证明无法在一次操作内将所有顶点染黑,因此最少需要 22 次操作。

在第四个测试用例中,第一次操作将顶点 44、11 和 77 染黑,第二次操作将顶点 22、55 和 66 染黑,第三次操作将顶点 33 和 77 染黑。注意顶点 77 被染黑了两次。

因此,每个节点至少被染黑一次,其中顶点 77 被染黑了两次。可以证明无法用少于 33 次操作将所有顶点染黑。

由 ChatGPT 4.1 翻译

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

首页