CF1667D Edge Elimination

题目描述

给定一棵有 $n$ 个顶点的树(连通、无向、无环图)。如果两条边有且仅有一个端点相同,则称它们是相邻的。在一次操作中,你可以移除任意一条边,前提是该边与剩余的边相邻的边数为偶数。 请移除所有的边,或者判断是否不可能。如果有多种方案,输出任意一种。

输入格式

输入包含多组测试用例。第一行为一个整数 $t$($1 \le t \le 10^5$)——表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行为一个整数 $n$($2 \le n \le 2 \cdot 10^5$)——表示树的顶点数。 接下来的 $n-1$ 行,每行包含两个整数 $u_i$、$v_i$($1 \le u_i, v_i \le n$),表示第 $i$ 条边的两个端点。保证给定的图是一棵树。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果不可能移除所有边,输出 "NO"。 否则输出 "YES",并在接下来的 $n-1$ 行中输出一种可行的移除边的顺序。每行输出一条被移除的边的两个端点,顺序任意。

说明/提示

测试用例 $1$:可以移除这条边,因为它没有与其他边相邻。 测试用例 $2$:两条边都只与一条边相邻,因此无法移除任何一条边。所以答案是 "NO"。 测试用例 $3$:边 $2-3$ 与另外两条边相邻,因此可以移除它。移除后,剩下的边也可以被移除。 由 ChatGPT 4.1 翻译