P17535 [JAG 2026 Summer Camp #1] Sliding Puzzle on Tree

题目描述

给定一棵有 $N$ 个顶点的树,顶点编号为 $1$ 到 $N$。树的第 $i$ 条边连接顶点 $u_i$ 和 $v_i$。初始时,对于每个 $i$($1\le i\le N$),若 $A_i=1$,则顶点 $i$ 上有一块石子;若 $A_i=0$,则该顶点上没有石子。 你可以重复执行以下操作: - 选择一条此前没有选择过的边,要求它的两个端点中恰好有一个端点上有石子,然后将该石子移动到另一个端点。 判断是否能恰好执行 $N-1$ 次操作。如果可以,输出选择各条边的顺序。

输入格式

输入包含一组或多组测试数据。第一行包含一个整数 $T$($1\le T\le 10^5$),表示测试数据组数。接下来给出 $T$ 组测试数据,每组格式如下: ```text N u_1 v_1 u_2 v_2 ... u_{N-1} v_{N-1} A_1 A_2 ... A_N ``` 第一行包含一个整数 $N$($2\le N\le 2\times 10^5$),表示顶点数量。 对于每个 $i$($1\le i\le N-1$),接下来 $N-1$ 行中的第 $i$ 行包含两个用空格分隔的整数 $u_i$ 和 $v_i$($1\le u_i,v_i\le N$),表示第 $i$ 条边连接顶点 $u_i$ 和 $v_i$。保证给定图是一棵树。 最后一行包含 $N$ 个用空格分隔的整数 $A_1,A_2,\ldots,A_N$($A_i\in\{0,1\}$)。$A_i$ 表示顶点 $i$ 上初始时是否放有石子。 所有测试数据的 $N$ 之和不超过 $2\times 10^5$。

输出格式

对于每组测试数据,按以下方式输出答案。 若无法恰好执行 $N-1$ 次操作,在单独一行输出 `No`。 若可以,第一行输出 `Yes`,第二行按以下格式输出边的序列: ```text e_1 e_2 ... e_{N-1} ``` 这里,$e_k$($1\le e_k\le N-1$)表示第 $k$ 次操作所选择的边的编号。若存在多个合法序列,可以输出其中任意一个。