#arc063c. [arc063_c]Integers on a Tree

[arc063_c]Integers on a Tree

问题描述

我们有一棵包含 NN 个顶点的树。这些顶点编号为 1,2,...,N1, 2, ..., N。第 ii 条 (1iN11 ≦ i ≦ N - 1) 边连接了两个顶点 AiA_iBiB_i

高濑在 KK 个顶点中写入了整数。具体来说,对于每个 1jK1 ≦ j ≦ K,他将整数 PjP_j 写入了顶点 VjV_j。其余的顶点为空。然后,他累了,就睡着了。

然后,青木出现了。他想要通过在所有空顶点中写入整数来让高濑感到惊喜,以满足以下条件:

  • 条件:对于由一条边直接连接的任意两个顶点,这些顶点中的整数之间相差恰好为 11

确定是否可以在所有空顶点中写入整数以满足条件。如果答案是肯定的,找到一种满足条件的具体方法。

约束条件

  • 1N1051 ≦ N ≦ 10^5
  • 1KN1 ≦ K ≦ N
  • 1Ai,BiN1 ≦ A_i, B_i ≦ N (1iN11 ≦ i ≦ N - 1)
  • 1VjN1 ≦ V_j ≦ N (1jK1 ≦ j ≦ K) (21:18, 修正了约束条件中的错误)
  • 0Pj1050 ≦ P_j ≦ 10^5 (1jK1 ≦ j ≦ K)
  • 给定的图是一棵树。
  • 所有 vjv_j 是不同的。

输入

输入以以下格式从标准输入给出:

NN A1A_1 B1B_1 A2A_2 B2B_2 :: AN1A_{N-1} BN1B_{N-1} KK V1V_1 P1P_1 V2V_2 P2P_2 :: VKV_K PKP_K

输出

如果可以在所有空顶点中写入整数以满足条件,则输出 Yes。否则,输出 No

如果可以满足条件,另外输出 NN 行。这 NN 行中的第 vv 行 (1vN1 ≦ v ≦ N) 应包含应该写入顶点 vv 的整数。如果有多种满足条件的方式,则接受任何一种方式。


示例输入 1

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

示例输出 1

Yes
5
6
6
5
7

下面的图显示了高濑睡着时的树。对于每个顶点,旁边写的整数表示顶点的索引,而写在顶点内部的整数是高濑写的整数。

6da26f89839711a520acdf5c3e1cc309.png

青木可以通过以下方式将整数写入剩余的顶点来满足条件:

1858d5af5a2c0e51aca39a39d765debb.png

这对应于示例输出 1。请注意,满足条件的其他输出也将被接受,例如:

Yes
7
6
8
7
7

示例输入 2

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

示例输出 2

No

示例输入 3

4
1 2
2 3
3 4
1
1 0

示例输出 3

Yes
0
-1
-2
-3

青木书写的整数可以是负数,也可以超过 10610^6