5D.环线规划(route)
时空限制:4 s / 1024 MiB
输入输出方式:route.in / route.out
C 国由 个城市组成,编号为 到 。这些城市由 条双向道路互相连接,且任意两个城市都能通过这些道路互相到达。
现在 C 国的规划中心决定在这些道路上修建一条快速交通环线,这条环线是一条经过所有城市的 闭合 路线,且恰好经过每条道路的两个方向各一次。一条环线可以表示为一个长度为 的城市序列 ,满足:
- ;
- 对于任意 ,城市 与 之间都有道路连接;
- 每条道路的两个方向都在序列中恰好出现一次。
注意,一个城市可能在环线中出现多次。
接下来,环线上将会开设两班列车,分别按照 与 的顺序循环运行。
同时,市政部向规划中心提出了 个要求,每个要求的形式如下:
- 给定两个城市 ,需要保证,某乘客从城市 可以乘坐列车到达城市 ,并且在乘坐过程中不会重复经过同一个城市。注意,如果城市 在环线中出现多次,乘客只需要选择合适的一次出现乘坐列车。
这对规划中心的专家们来说实在太难了,所以他们找到了你,算法大师小 F,帮助他们设计一个符合全部要求的环线,或者指出这样的环线实际上不存在。
输入格式
从文件 route.in 中读入数据。
本题包含多组测试数据。输入的第一行包含两个正整数 ,分别表示测试点编号以及测试数据组数。 表示该测试点为样例。
对于每组测试数据:
- 第一行包含两个正整数 ,分别表示 C 国的城市个数和市政部的要求个数;
- 接下来 行,第 行两个正整数 ,表示存在一条连接城市 和城市 的双向道路。保证任意两个城市都能通过这些道路互相到达。
- 接下来 行,第 行两个正整数 ,表示一个要求。
输出格式
输出到文件 route.out。
对于每组测试数据:
- 如果不存在符合全部要求的环路,输出一行
No; - 否则,在输出的第一行输出
Yes,在第二行输出 个正整数 ,表示你所规划的环路。
样例 1
0 32 1 1 2 1 24 3 1 2 1 3 1 4 2 3 2 4 3 45 3 1 2 1 3 1 4 1 5 2 3 2 4 2 5
Yes 1 2 1Yes 1 2 1 3 1 4 1No
对于第一组测试数据,只有一条道路,环线可以为 。
对于第二组测试数据,环线可以为 。任意两个叶子城市之间都可以选择合适方向乘车,并且途中不会重复经过城市。
对于第三组测试数据,三个要求分别迫使通向城市 的道路在城市 处与通向城市 的道路相邻。然而在环线经过城市 时,一条道路在局部环形顺序中只能与两条道路相邻,因此不存在满足全部要求的环线。
样例 2
见附件中的 route2.in 与 route2.ans。
该样例满足测试点 的限制条件。
样例 3
见附件中的 route3.in 与 route3.ans。
该样例满足测试点 的限制条件。
样例 4
见附件中的 route4.in 与 route4.ans。
该样例满足测试点 的限制条件。
样例 5
见附件中的 route5.in 与 route5.ans。
该样例满足测试点 的限制条件。
样例 6
见附件中的 route6.in 与 route6.ans。
该样例满足测试点 的限制条件。
样例 7
见附件中的 route7.in 与 route7.ans。
该样例满足测试点 的限制条件。
样例 8
见附件中的 route8.in 与 route8.ans。
该样例满足测试点 的限制条件。
样例 9
见附件中的 route9.in 与 route9.ans。
该样例满足测试点 的限制条件。
样例 10
见附件中的 route10.in 与 route10.ans。
该样例满足测试点 的限制条件。
数据范围
设 表示单测试点内所有测试数据中 的和, 表示单测试点内所有测试数据中 的和。
对于全部测试数据,保证:
- ;
- ,;
- ,;
- 对于任意 ,,且任意两个城市均可通过道路互相到达;
- 对于任意 ,,且 互不相同。
| 测试点编号 | 特殊性质 | ||||
|---|---|---|---|---|---|
| 无 | |||||
| A | |||||
| B | |||||
| C | |||||
| 无 | |||||
- 特殊性质 A:对于任意 ,,;
- 特殊性质 B:对于任意 ,;
- 特殊性质 C:每个城市至多与 条道路相连。