CF763A.Timofey and a tree

传统题 时间 2000 ms 内存 256 MiB 8 尝试 16 已通过 8 标签

Timofey and a tree

题目描述

每年新年,Timofey 和他的朋友们会砍下一棵有 nn 个顶点的树带回家。之后他们会给这 nn 个顶点全部涂上颜色,使得第 ii 个顶点的颜色为 cic_i

现在到了 Timofey 的生日,他的妈妈让他把这棵树处理掉。Timofey 按以下方式移除树:他用手握住某个顶点,而所有其他顶点向下垂落,使得树以选中的顶点为根。然后 Timofey 把整棵树扔进垃圾桶。

Timofey 不喜欢太多颜色混在一起。如果某个子树中存在不同颜色的顶点,他就会感到厌烦。Timofey 想找到一个顶点,他握住这个顶点后,整棵树没有任何子树会让他厌烦。他不把整棵树视为一个子树,因为他看不到根顶点的颜色。

某个顶点的子树是指包含该顶点及其所有后代顶点的子图。

你的任务是判断是否存在这样一个顶点,Timofey 握住它后就不会感到厌烦。

输入

第一行包含一个整数 nn2n1052 \le n \le 10^5)—— 树中顶点的数量。

接下来 n1n - 1 行,每行包含两个整数 uuvv1u,vn1 \le u, v \le nuvu \ne v),表示顶点 uuvv 之间有一条边。保证给定的图是一棵树。

最后一行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n1ci1051 \le c_i \le 10^5),表示各顶点的颜色。

输出

如果 Timofey 无法选择合适的顶点使他不感到厌烦,则输出一行 "NO"。

否则,第一行输出 "YES",第二行输出他应该握住的顶点编号。如果有多个答案,输出任意一个即可。

样例

样例 1

输入:

4
1 2
2 3
3 4
1 2 1 1

输出:

YES
2

样例 2

输入:

3
1 2
2 3
1 2 3

输出:

YES
2

样例 3

输入:

4
1 2
2 3
3 4
1 2 1 2

输出:

NO

在线编程 IDE

建议全屏模式获得最佳体验