#P12427. [BalticOI 2025] Tour
[BalticOI 2025] Tour
Description
托伦有许多旅游景点。我们的导游准备了一份包含 条单向步行路线的清单,这些路线连接了市中心的 个集合点。步行路线编号为 1 到 ,集合点编号为 1 到 。每条步行路线从一个集合点出发,到达另一个集合点,途中可以参观一个景点。不同的步行路线可能参观相同的景点,并且同一对集合点之间可能存在多条步行路线。我们希望在休息日组织一次有趣的游览。
一次游览是指一系列步行路线,其中每条步行路线的起点是前一条步行路线的终点。此外,最后一条步行路线的终点必须是最初第一条步行路线的起点。
如果一次游览中不会连续两次参观相同的景点,则称其为有趣的游览。换句话说,游览中任意两条连续的步行路线参观的景点必须不同,并且第一条和最后一条步行路线参观的景点也必须不同。注意,我们不关心非连续的步行路线是否参观相同的景点。特别地,同一条步行路线可以在游览中多次使用(但不能连续使用两次)。
你的任务是判断是否可以组织一次有趣的游览,如果可以,则找到一条这样的游览。你可以输出任意一条包含不超过 条步行路线的有趣游览。可以证明,如果存在有趣的游览,那么一定存在一条不超过 条步行路线的有趣游览。
Input Format
第一行包含一个正整数 (),表示测试用例的数量。
每个测试用例的第一行包含两个正整数 和 (,),分别表示集合点的数量和步行路线的数量。
接下来的 行描述了 条步行路线。第 行包含三个正整数 、 和 (,,),表示第 条步行路线从集合点 出发,到达集合点 ,并且参观的景点编号为 。
设 和 分别表示所有测试用例中 和 的总和。你可以假设 。
Output Format
对于每个测试用例,第一行输出 YES 表示可以组织有趣的游览,否则输出 NO。如果可以组织,则在第二行首先输出一个正整数 (),表示构成有趣游览的步行路线数量。随后输出 个用单个空格分隔的整数 ,这些数字描述了一条有趣的游览,其中我们首先走步行路线 ,然后是 ,依此类推,最后走步行路线 回到最初的集合点。
5
3 3
1 2 1
2 3 2
3 1 1
3 3
2 1 1
1 3 3
3 1 2
2 2
1 2 2
1 2 1
5 6
1 2 1
2 3 2
3 1 1
1 4 3
4 5 4
5 1 3
4 4
1 3 4
3 2 1
2 3 2
2 3 2
NO
YES
2 2 3
NO
YES
6 3 4 5 6 1 2
YES
4 2 4 2 3
Hint

示例中第 4 个测试用例的图示。箭头表示集合点之间的步行路线。
评分
| 子任务 | 限制条件 | 分值 |
|---|---|---|
| 1 | 且 | 9 |
| 2 | 23 | |
| 3 | 19 | |
| 4 | 25 | |
| 5 | 无额外限制。 | 24 |
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号