부서진 문의 복수

적대자가 도로 하나를 공사 중으로 숨기고, 여행자는 도로의 끝 도시에 도착해야 그 사실을 알 수 있으며, S에서 T까지 최악의 경우 거리를 최소화해야 한다.

어려움9그래프최단 경로그리디DFS아직 제출이 없습니다시간 제한10초메모리 제한512 MB

문제

JAG 왕국에는 NN개의 도시와 MM개의 양방향 도로가 있다. ii번째 도로 (ui,vi,ci)(u_i, v_i, c_i)는 도시 uiu_i와 도시 viv_i를 잇고 길이는 cic_i이다. JAG 왕국의 시민인 당신은 어느 날 도시 SS에서 출발해 도시 TT로 가기로 했다. 그런데 왕국의 도로 가운데 하나가 지금 공사 중이라 지나갈 수 없다는 사실을 알고 있다. 어느 도로인지는 모른다. 어떤 도로가 공사 중인지는 그 도로가 잇는 두 도시 중 한 곳에 있을 때에만 알 수 있다.

최악의 경우에 이동하는 경로의 총 길이가 최소가 되도록 하라. 출발하기 전에 경로를 정해 둘 필요는 없고, 다음에 갈 곳은 언제든지 그때그때 정할 수 있다. 최악의 경우에 도시 TT에 도착할 수 없으면 -1을 출력한다.

입력

입력은 다음 형식의 테스트 케이스 하나로 이루어진다.

N M S T
u1 v1 c1
.
.
.
uM vM cM

첫째 줄에 네 정수 NN, MM, SS, TT가 주어진다. NN은 도시의 수 (2N100,0002 \le N \le 100{,}000), MM은 양방향 도로의 수 (1M200,0001 \le M \le 200{,}000), SS는 출발 도시 (1SN1 \le S \le N), TT는 도착 도시 (1TN1 \le T \le N, STS \ne T)이다. 이어지는 MM개 줄은 도로 정보이다. 그중 ii번째 줄에는 세 정수 uiu_i, viv_i, cic_i가 주어지며, ii번째 도로가 도시 uiu_i와 도시 viv_i를 (1ui,viN1 \le u_i, v_i \le N, uiviu_i \ne v_i) 길이 cic_i (1ci1091 \le c_i \le 10^9)로 잇는다는 뜻이다. 공사 중인 도로가 없다면 모든 도시 쌍은 서로 연결되어 있다고 가정해도 된다. 즉, 모든 도시 xxyy에 대해 주어진 도로만으로 xx에서 yy로 가는 경로가 적어도 하나 있다. 같은 두 도시를 잇는 도로가 두 개 이상 주어지지는 않는다. 즉, 1i<jM1 \le i < j \le M인 모든 ii, jj에 대해 {ui,vi}{uj,vj}\{u_i, v_i\} \ne \{u_j, v_j\}이다.

출력

최악의 경우에 이동하는 경로의 총 길이의 최솟값을 출력한다. 최악의 경우에 도시 TT에 도착할 수 없으면 -1을 출력한다.