欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF763A.Timofey and a tree
Timofey and a tree
题目描述
每年新年,Timofey 和他的朋友们会砍下一棵有 个顶点的树带回家。之后他们会给这 个顶点全部涂上颜色,使得第 个顶点的颜色为 。
现在到了 Timofey 的生日,他的妈妈让他把这棵树处理掉。Timofey 按以下方式移除树:他用手握住某个顶点,而所有其他顶点向下垂落,使得树以选中的顶点为根。然后 Timofey 把整棵树扔进垃圾桶。
Timofey 不喜欢太多颜色混在一起。如果某个子树中存在不同颜色的顶点,他就会感到厌烦。Timofey 想找到一个顶点,他握住这个顶点后,整棵树没有任何子树会让他厌烦。他不把整棵树视为一个子树,因为他看不到根顶点的颜色。
某个顶点的子树是指包含该顶点及其所有后代顶点的子图。
你的任务是判断是否存在这样一个顶点,Timofey 握住它后就不会感到厌烦。
输入
第一行包含一个整数 ()—— 树中顶点的数量。
接下来 行,每行包含两个整数 和 (,),表示顶点 和 之间有一条边。保证给定的图是一棵树。
最后一行包含 个整数 (),表示各顶点的颜色。
输出
如果 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
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |