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$ 次操作所选择的边的编号。若存在多个合法序列,可以输出其中任意一个。