무료 항공권 한 장

무방향 가중 도로 그래프와 최대 1000개의 단방향 무료 항공편이 주어질 때, 항공편을 최대 한 번 이용해 s에서 t로 가는 최소 비용을 구한다.

보통7그래프최단 경로동적 계획법면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

피터는 ICPC 월드 파이널에 다녀왔다. 돌아오는 비행기가 초과 예약되는 바람에 피터는 자리를 잃었고, 항공사는 보상으로 원하는 두 도시를 잇는 무료 항공권 한 장을 주었다.

피터는 벌써 내년 여행을 계획하고 있다. 이동은 자동차로 하지만, 주어진 항공편 가운데 하나를 골라 여정의 한 구간에 무료 항공권을 쓸 수 있다. 항공권을 쓴 구간은 비용이 들지 않는다.

도시를 잇는 도로망과 각 도로의 기름값, 그리고 이용할 수 있는 항공편 목록이 주어진다. 피터가 출발 도시에서 내년 목적지까지 가는 데 드는 최소 비용을 구하여라.

입력

입력은 테스트 케이스 하나로 이루어진다. 첫째 줄에 다섯 정수 nn, mm, ff, ss, tt가 공백으로 구분되어 주어진다. nn은 도시의 수 (0<n500000 < n \le 50\,000), mm은 도로의 수 (0m1500000 \le m \le 150\,000), ff는 항공편의 수 (0f10000 \le f \le 1\,000), ss는 피터가 출발하는 도시의 번호 (0s<n0 \le s < n), tt는 피터가 도착하려는 도시의 번호 (0t<n0 \le t < n)이다. 도시 번호는 00부터 n1n - 1까지이다.

다음 mm개 줄에는 도로 하나의 정보가 세 정수 ii, jj, cc (0i,j<n0 \le i, j < n, iji \ne j, 0<c500000 < c \le 50\,000)로 주어진다. 도시 ii와 도시 jj를 잇는 도로가 있고 이 도로를 지나는 데 cc센트가 든다는 뜻이다. 도로는 양방향 모두 같은 비용으로 이용한다. 도로 정보는 모두 서로 다르다.

이어지는 ff개 줄에는 항공편 하나의 정보가 두 정수 uu, vv (0u,v<n0 \le u, v < n, uvu \ne v)로 주어진다. 도시 uu에서 도시 vv로 가는 항공편이 있다는 뜻이다. vv에서 uu로 가는 항공편은 따로 한 줄로 주어지지 않는 한 없다. 항공편 정보는 모두 서로 다르다.

출력

피터가 항공편을 많아야 한 번 이용해서 출발 도시에서 목적지까지 가는 데 드는 최소 비용을 센트 단위로 출력한다. 목적지까지 가는 경로는 항상 존재한다.