만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

경로 우회

시간 제한2초메모리 제한512 MB

요약
수리된 차량의 도시에서 목적지까지 가는 최소 통행료를 구한다. 고정된 서비스 경로의 도시를 처음 지나는 순간부터는 그 경로를 그대로 따라야 한다.
난이도

보통10점 중 6점

유형
그래프, 최단 경로, 그리디, 구현
정답자
아직 제출이 없습니다

문제

어떤 나라의 도로망은 NN개의 도시를 모두 이어 준다. 어느 도시에서 출발하든 이미 있는 도로만 이용해 나머지 모든 도시에 도착할 수 있다. 도로 하나는 서로 다른 두 도시를 잇고 양방향으로 통행할 수 있으며, 요금소가 하나씩 있다. 통행료는 두 방향 모두에서 낸다. 도로는 도시에서만 만난다. 두 도시를 잇는 도로가 둘 이상인 경우는 없다.

디아스 운송은 도시 사이의 화물 배송 서비스를 운영한다. 화물 하나는 도시 AA에서 다른 도시 BB로 옮겨야 한다. 회사는 화물마다 도시 CC개와 도로 C−1C-1개로 이루어진 서비스 경로를 정한다. 서비스 경로의 첫 도시가 화물의 출발지, 마지막 도시가 도착지다. 서비스 경로는 같은 도시를 두 번 지나지 않고, 배송을 맡은 차량은 정해진 서비스 경로로만 달릴 수 있다.

그런데 어느 날 배송 중이던 차량이 고장 났다. 차량은 서비스 경로에 속하지 않은 도시로 옮겨져 수리를 받았다. 회사는 수리를 마친 도시에서 출발해 화물을 도착지까지 배달하는 데 드는 최소 통행료 총액을 알고 싶다. 여기에 제약이 하나 더 붙는다. 차량이 도중에 서비스 경로에 속한 도시를 지나면, 그 도시부터는 다시 서비스 경로를 따라가야 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 네 정수 NN, MM, CC, KK가 주어진다 (4≤N≤2504 \le N \le 250, 3≤M≤N×(N−1)/23 \le M \le N \times (N-1) / 2, 2≤C≤N−12 \le C \le N-1, C≤K≤N−1C \le K \le N-1). 차례로 나라의 도시 수, 도로 수, 서비스 경로에 속한 도시 수, 차량을 수리한 도시를 뜻한다. 도시는 00부터 N−1N-1까지의 정수로 구분한다. 서비스 경로는 0,1,…,C−10, 1, \ldots, C-1이다. 즉 출발지가 00이고, 00에서 11로, 11에서 22로 이어져 도착지 C−1C-1까지 간다.

이어지는 MM개의 줄은 나라의 도로망을 설명한다. 각 줄에는 도로 하나를 나타내는 세 정수 UU, VV, PP가 주어진다 (0≤U,V≤N−10 \le U, V \le N-1, U≠VU \neq V, 0≤P≤2500 \le P \le 250). 도시 UU와 도시 VV를 잇는 도로가 있고 그 통행료가 PP라는 뜻이다.

마지막 테스트 케이스 다음 줄에는 공백으로 구분된 네 개의 00이 주어진다.

출력

각 테스트 케이스마다 한 줄에 정수 TT 하나를 출력한다. TT는 차량이 도착지에 이르는 데 필요한 최소 통행료 총액이다.

예제1

  1. 예제 1

    입력
    4 6 3 3
    0 1 10
    1 2 10
    0 2 1
    3 0 1
    3 1 10
    3 2 10
    6 7 2 5
    5 2 1
    2 1 10
    1 0 1
    3 0 2
    3 4 2
    3 5 3
    5 4 2
    5 5 2 4
    0 1 1
    1 2 2
    2 3 3
    3 4 4
    4 0 5
    0 0 0 0
    
    예상 출력
    10
    6
    6