#P971. 【基础】最短距离和路径问题
【基础】最短距离和路径问题
题目描述
有 个城市,编号为 ,城市之间有 条双向道路,每条道路有一个正整数长度。请你求出从起点 到终点 的最短距离,以及最短路径上经过的城市编号。
如果从 到 存在多条长度相同的最短路径,请输出字典序最小的那条路径;若不存在从 到 的路径,请输出 can't arrive。
注意:两个相同的城市之间可能存在多条道路。
输入格式
第一行包含四个正整数 ,分别表示城市的数量、道路的数量、起点编号、终点编号。
接下来 行,每行三个正整数 ,表示一条连接城市 和城市 的双向道路,道路长度为 。
输出格式
如果存在从起点 到终点 的路径:
- 第一行输出一个整数,表示 到 的最短距离。
- 第二行输出若干个用空格分隔的整数,表示最短路径上依次经过的城市编号。若有多条最短路径,输出字典序最小的那条。
如果不存在从起点 到终点 的路径,仅输出一行字符串 can't arrive。
输入输出样例
样例输入 #1
3 3 1 3
1 3 3
1 2 1
2 3 1
样例输出 #1
2
1 2 3
样例输入 #2
6 6 1 4
1 2 1
2 6 1
6 4 1
1 5 1
5 3 1
3 4 1
样例输出 #2
2
1 2 6 4
说明/提示
数据范围
对于 的数据: