P1019星语楠尘(stardust)
【题目背景】
离开营地后,tfbz 在旅途中来到星尘镇,并在这里结识了许多可以托付性命的朋友。为了帮助他们恢复与外界的联系,他决定修复失效已久的星语传递系统。
【题目描述】
星尘镇中共有 座星塔,编号为 。星塔之间由 条双向的星尘脉络连接,并且任意两座星塔之间都能通过这些脉络相互到达,因此它们构成一棵树。
夜幕降临时,每座星塔都会记录一种从天空传来的星语,第 座星塔记录的星语种类为 。然而,传递系统停运太久,不同种类的星语已经混入同一片脉络;如果直接重新启动,镇民仍然无法分辨收到的消息。
tfbz 与朋友们沿着所有星尘脉络逐一检查,发现修复系统的关键是重新确定星语传递的起点。他需要选择一座星塔 作为星语源点,让所有星语都从这里沿着脉络向外传递;也就是说,将整棵树以 为根。
对于任意一座不是源点的星塔 ,定义它的星语支系为:星塔 本身,以及以 为根时 的所有后代。若一片星语支系中所有星塔记录的星语种类相同,则称这片支系稳定。
只有每一片需要检查的支系都稳定,星语才能被准确传到镇中的每一处。tfbz 想知道,是否存在一座星语源点,使每座非源点星塔的星语支系都稳定。源点对应的整棵树不需要稳定;若存在,请给出任意一座合法的星塔。
【输入格式】
从文件 中读入数据。
本题有多组测试数据。第一行一个正整数 ,表示测试数据组数。
对于每组测试数据,第一行一个整数 ,表示星塔的数量。
接下来 行,每行两个整数 ,表示星塔 之间有一条星尘脉络。
最后一行 个整数 ,其中 表示第 座星塔记录的星语种类。
【输出格式】
输出到文件 中。
对于每组测试数据:
- 若不存在合法的根,输出一行
NO; - 否则,第一行输出
YES,第二行输出任意一个合法的根。
每组测试数据的输出依次排列,不需要输出额外的空行。
【样例 1 输入】
161 21 32 42 53 67 2 3 2 2 3【样例 1 输出】
YES1【说明/提示】
【样例 1 解释】
选择第 座星塔作为星语源点。第 座星塔的星语支系包含星塔 ,它们记录的星语种类均为 ;第 座星塔的星语支系包含星塔 ,它们记录的星语种类均为 。其余非源点星塔的支系只包含自身,因此均满足要求。
如果存在多个合法的根,输出任意一个均可。
【样例 2】
见选手目录下的 和 。
该组样例符合测试点 的数据范围。
【样例 3】
见选手目录下的 和 。
该组样例符合测试点 的数据范围。
【样例 4】
见选手目录下的 和 。
该组样例符合测试点 的数据范围。
【样例 5】
见选手目录下的 和 。
该组样例符合测试点 的数据范围。
【数据范围】
对于 的数据,保证:,,,,,输入给出的图是一棵树,且单个测试点内所有测试数据的 之和不超过 。
| 测试点编号 | 特殊性质 | |||
|---|---|---|---|---|
| 无 | ||||
| A | ||||
| B | ||||
| 无 |
特殊性质 A:输入给出的树是一条链。
特殊性质 B:若存在合法的星语源点,则第 座星塔是合法的星语源点。
【题解】
已公开 1 篇题解,官方题解会优先显示。