30158 - 航空路线问题

给定一张航空图,图中顶点代表城市,边代表两城市间的直通航线,并且不存在任何两个城市在同一条经线上。现要求找出一条满足下述限制条件的且途经城市最多的旅行路线。1. 从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后再单向从东向西飞回起点(可途经若干城市)。2. 除起点城市外,任何城市只能访问一次。对于给定的航空图,试设计一个算法找出一条满足要求的最佳航空旅行路线。

输入

输入的第一行是用空格隔开的两个整数,分别代表航空图的点数 n 和边数 v。第 2 到第 (n + 1) 行,每行一个字符串,第 (i + 1) 行的字符串代表从西向东第 i 座城市的名字 s_i。第 (n + 2) 到第 (n + v + 1) 行,每行两个字符串 x, y,代表城市 x 和城市 y 之间存在一条直通航线。

输出

本题存在 Special Judge。请首先判断是否存在满足要求的路线,若存在,请给出一种旅行的方案。如果存在路线,输出格式为:请在第一行输出一个整数 m,代表途径最多的城市数。在第 2 到第 (m + 2) 行,每行一个字符串,第 (i + 1) 行的字符串代表旅行路线第 i 个经过的城市的名字。请注意第 1 和第 (m + 1) 个城市必然是出发城市名。否则请输出一行一个字符串 No Solution!

样例

输入


                

输出


                

来源

网络流与线性规划24题

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题