정기권
시간 제한2초메모리 제한256 MB
S에서 T로 가는 최단 경로 하나를 무료로 지정한 뒤, 그 경로의 간선은 0원, 나머지는 요금을 내는 조건에서 U에서 V로 가는 최소 비용을 구한다.
문제
JOI 군이 사는 도시에는 역이 개 있다. 역에는 1부터 까지 번호가 붙어 있다. 철도 노선은 개이고, 1부터 까지 번호가 붙어 있다. 노선 ()는 역 와 역 를 양방향으로 잇고, 요금은 엔이다.
JOI 군은 역 근처에 살고, 역 근처에 있는 IOI 고등학교에 다닌다. 그래서 두 역을 잇는 정기권을 사려고 한다. 정기권을 살 때는 역 와 역 사이의 경로 중 비용이 최소인 경로를 하나 골라야 한다. 이 정기권이 있으면 고른 경로에 포함된 노선은 어느 방향으로든 추가 요금 없이 탈 수 있다.
JOI 군은 역 와 역 근처의 서점에도 자주 간다. 그래서 역 에서 역 까지 가는 비용이 최소가 되도록 정기권을 사고 싶다.
역 에서 역 로 갈 때는 먼저 역 에서 역 까지의 경로를 하나 고른다. 그 경로에 포함된 각 노선 의 요금은 다음과 같다.
- 노선 가 정기권을 살 때 고른 경로에 포함되면 0엔
- 노선 가 정기권을 살 때 고른 경로에 포함되지 않으면 엔
이 요금의 합이 역 에서 역 까지의 비용이다.
정기권을 살 때 경로를 알맞게 고른다고 할 때, 역 에서 역 까지의 최소 비용을 구하는 프로그램을 작성하시오.
입력
표준 입력에서 다음 데이터를 읽는다.
- 첫째 줄에 정수 , 이 공백으로 구분되어 주어진다. JOI 군이 사는 도시에 역이 개, 철도 노선이 개 있다는 뜻이다.
- 둘째 줄에 정수 , 가 공백으로 구분되어 주어진다. JOI 군이 역 와 역 를 잇는 정기권을 사려 한다는 뜻이다.
- 셋째 줄에 정수 , 가 공백으로 구분되어 주어진다. JOI 군이 역 에서 역 까지의 비용을 최소로 만들고 싶다는 뜻이다.
- 이어지는 개 줄 중 번째 줄 ()에 정수 , , 가 공백으로 구분되어 주어진다. 노선 가 역 와 역 를 양방향으로 잇고, 요금이 엔이라는 뜻이다.
출력
표준 출력에 한 줄을 출력한다. 정기권을 살 때 경로를 알맞게 골랐을 때 역 에서 역 까지 가는 최소 비용을 출력한다.
제한
- 또는
- 철도를 타면 어느 역에서든 다른 어느 역으로도 갈 수 있다.
- ()
- 인 모든 , 에 대해 또는
- ()