AT_jag2017autumn_d Revenge of the Broken Door

题目描述

*JAG*王国有*N*个城市和*M*条双向道路,其中第$i$条道路($u_i$,$v_i$,$c_i$)连接城市$u_i$和城市$v_i$,其长度为$c_i$。 有一天,你,一个*JAG*王国的公民,决定从*S*城前往*T*城。然而,*JAG*王国的一条道路目前正在建设中,你无法通过该道路。最糟糕的是,你不知道是哪条路无法通过。只有当你来到与某条道路相连的城市时,你才能知道这条道路是否正在施工。 你的任务是找到最坏的情况下路线的最小总长度。但好在你并不需要在出发前就决定路线,你可以随时选择下一步要去的地方。如果在最坏情况下都无法到达T城,则输出$-1$。

输入格式

包含一组测试数据 第一行为4个正整数$N$,$M$,$S$,$T$。其中$N$为城市数($2\leq N\leq 100,000$),$M$为道路数($1\leq M\leq 200,000$),$S$为起点城市($1\leq S\leq N$),$T$为终点城市($1\leq T\leq N$,$S \ne T$)。 接下来有M行。每行三个正整数$u_i$,$v_i$,$c_i$,代第$u_i$城与$v_i$城间有一长度为$c_i$的道路连通。 数据保证,对于任意城市$x$和$y$,至少存在一条从城市$x$到城市$y$的路线;并且没有重边存在,即对于任意$i$、$j$($1 \le i < j \le M$),都存在$E_i${$u_i$,$v_i$} $\ne$ $E_j${$u_j$,$v_j$}。

输出格式

输出最坏情况下该路程的最小总长度。如果在最坏情况下无法到达$T$城,则输出`-1`。