|
观光旅游
在桑给巴尔岛这个优美的观光城市边上有一个旅行社。为了尽可能从这些优美风光中获取利润,旅行社接受了一个精明的决定:必须找出一条从同一个地点出发并回到起点的最短的旅游线路。你的任务就是写一个程序找出这样的线路。
在这个城镇有N个十字路口(标号为1到N)和M条两向的路(标号为1到M)。两个十字路口可以连接着多条路,但不存在从自身到自身的路。每个观光路线是一个路编号的序列
。路
的两端是
和
,路
的两端是
和
。所有的 ,…
必须是不同的。观光路线的长度为观光路上的所有路的长度和,即L(
) + L(
) +... + L(
) ,这里 L( )
是路
的长度( )
。你的程序要找出长度最小的观光线路。城镇可能不存在观光线路。
输入
输入文件TRIP.IN 的第一行包含两个整数N和M(N <= 100, M <= 10000)。接下来的M行,每行表示一条路,它包含3个正整数:路的两个端点标号和路的长度(小于500)。
输出
输出文件TRIP.OUT仅包含一行,如果不存在任何的观光路线,则输出No solution",否则输出一条长度最短的观光线路。如果有多种解,则输出任一解。
样例1
TRIP.IN
5 7
1 4 1
1 3 300
3 1 10
1 2 16
2 3 100
2 5 15
5 3 20
TRIP.OUT (one of correct answers)
1 3 5 2
样例2
TRIP.IN
4 3
1 2 10
1 3 20
1 4 30
TRIP.OUT (the only correct answer)
No solution.
|