乡下学生进城升级版
题号:NC16573
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

榆中的学生有多种多样的方式从榆中校区到盘旋路校区,然而英勇的小g表示:他就是要徒步进城!现在地图上有n个地点,m条路径,每个路径有其长度c[i]。但是小g有公务在身,他需要从榆中校区(编号为1)出发,到k1点领取物品并且送到k2点,再从k2点出发到达盘旋路校区(编号为n)。请问小g最少要走多长的路,才能够从榆中校区到达盘旋路校区?

输入描述:

第一行,4个数n,m,k1,k2,分别代表地点数、路径数、k1点编号、k2点编号。

接下来m行,每行3个数x1,x2,c,表示从x1和x2点之间有一条长度为c的路。

输出描述:

一行,1个数,表示小g最短要走的路程的长度。
示例1

输入

复制
5 7 2 4
1 3 7
1 4 2
2 3 2
2 4 4
2 5 1
3 5 8
4 5 6

输出

复制
15

备注:

1<=n<=20000,1<=m<=200000,保证数据合法且均为整数。