무료 항공권 한 장
면접 대비시간 제한2초메모리 제한512 MB
무방향 가중 도로 그래프와 최대 1000개의 단방향 무료 항공편이 주어질 때, 항공편을 최대 한 번 이용해 s에서 t로 가는 최소 비용을 구한다.
문제
피터는 ICPC 월드 파이널에 다녀왔다. 돌아오는 비행기가 초과 예약되는 바람에 피터는 자리를 잃었고, 항공사는 보상으로 원하는 두 도시를 잇는 무료 항공권 한 장을 주었다.
피터는 벌써 내년 여행을 계획하고 있다. 이동은 자동차로 하지만, 주어진 항공편 가운데 하나를 골라 여정의 한 구간에 무료 항공권을 쓸 수 있다. 항공권을 쓴 구간은 비용이 들지 않는다.
도시를 잇는 도로망과 각 도로의 기름값, 그리고 이용할 수 있는 항공편 목록이 주어진다. 피터가 출발 도시에서 내년 목적지까지 가는 데 드는 최소 비용을 구하여라.
입력
입력은 테스트 케이스 하나로 이루어진다. 첫째 줄에 다섯 정수 , , , , 가 공백으로 구분되어 주어진다. 은 도시의 수 (), 은 도로의 수 (), 는 항공편의 수 (), 는 피터가 출발하는 도시의 번호 (), 는 피터가 도착하려는 도시의 번호 ()이다. 도시 번호는 부터 까지이다.
다음 개 줄에는 도로 하나의 정보가 세 정수 , , (, , )로 주어진다. 도시 와 도시 를 잇는 도로가 있고 이 도로를 지나는 데 센트가 든다는 뜻이다. 도로는 양방향 모두 같은 비용으로 이용한다. 도로 정보는 모두 서로 다르다.
이어지는 개 줄에는 항공편 하나의 정보가 두 정수 , (, )로 주어진다. 도시 에서 도시 로 가는 항공편이 있다는 뜻이다. 에서 로 가는 항공편은 따로 한 줄로 주어지지 않는 한 없다. 항공편 정보는 모두 서로 다르다.
출력
피터가 항공편을 많아야 한 번 이용해서 출발 도시에서 목적지까지 가는 데 드는 최소 비용을 센트 단위로 출력한다. 목적지까지 가는 경로는 항상 존재한다.