#CF1994F. Stardew Valley
Stardew Valley
星露谷物语
时间限制:2 秒
空间限制:256 MB
鹈鹕镇由 栋房屋和连接它们的 条双向道路组成。某些道路上有 NPC 站在那里。农夫 Buba 需要走过每一条有 NPC 的道路,并与他们交谈。
请帮助农夫找到一条满足以下性质的路线:
- 路线从某栋房屋开始,沿着道路行走,并在同一栋房屋结束。
- 路线不会在任何一条道路上走超过一次(两个方向合起来算一次)。
- 路线恰好经过每条有 NPC 的道路一次。
注意,路线可以经过没有 NPC 的道路,并且你不需要最小化路线的长度。
保证只沿着有 NPC 的道路就可以从任意一栋房屋到达任意另一栋房屋。
输入格式
每个测试包含多个测试用例。第一行包含一个整数 ()—— 测试用例数。接下来是各个测试用例的描述。
每个测试用例的第一行包含两个整数 和 (,)—— 鹈鹕镇的房屋数量和道路数量。
接下来的 行,每行包含三个整数 (, 或 )—— 道路的两端以及该道路上是否有 NPC。若 ,则该道路上有 NPC;若 ,则没有。
图中可能包含重边和自环。如果存在多条有 NPC 的道路,路线必须经过它们中的每一条。
保证只沿着有 NPC 的道路就可以从任意一栋房屋到达任意另一栋房屋。
保证所有测试用例的 与 之和不超过 。
输出格式
对于每个测试用例,如果不存在解决方案,则输出 No(不含引号)。
否则,输出 Yes(不含引号),然后输出一个整数 —— 路线中包含的道路数量。接下来一行输出 个整数 —— 路线依次经过的房屋编号。注意第一个房屋应与最后一个房屋相同,因为路线是环形的。
如果存在多个答案,输出任意一个即可。
你可以输出大写或小写字母(例如,字符串 yEs、yes、Yes 和 YES 都会被认为是肯定回答)。
样例输入
3
3 2
1 2 1
2 3 1
3 3
1 2 1
1 3 1
2 3 0
5 9
1 2 0
5 2 1
5 4 1
5 1 1
2 3 1
5 2 1
4 1 0
4 3 0
5 2 0
样例输出
NO
YES
3
1 2 3 1
YES
7
1 2 5 4 3 2 5 1
样例解释
注意在第三个测试用例中,存在多条连接 和 的边。你必须走过其中的两条(有 NPC 的)