아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

장거리 택시

시간 제한1초메모리 제한128 MB

요약
가중 무방향 그래프에서 주유 가능한 도시 목록과 연료 탱크의 최대 주행 거리가 주어질 때, 연료가 바닥나지 않으면서 출발지에서 도착지까지 가는 최단 경로의 길이를 구한다.
난이도

보통10점 중 7점

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

문제

택시 기사 나카무라는 수천 킬로미터 떨어진 도시로 가려는 손님을 태우게 되어 무척 기뻤습니다. 하지만 문제가 하나 있었습니다. 이 나라의 택시 대부분이 그렇듯, 그의 차도 휘발유보다 저렴한 액화석유가스(LPG)로 달립니다. 주유소는 5만 곳이 넘지만, 그중 LPG를 파는 곳은 1퍼센트도 되지 않습니다. 출발할 때 LPG 탱크는 가득 차 있지만 용량에 한계가 있고, 차는 1리터로 10킬로미터를 달리므로 도중에 연료를 채우지 않으면 목적지에 도착하지 못할 수도 있습니다. 그는 모든 LPG 주유소의 위치를 알고 있습니다.

현재 위치에서 목적지까지 연료가 바닥나지 않으면서 갈 수 있는 가장 짧은 경로의 길이를 구하는 프로그램을 작성하세요. 탱크 용량이 capcap 리터라면, 가득 채운 상태로는 다음 주유소에서 연료를 채우기 전까지 최대 10×cap10 \times cap 킬로미터를 달릴 수 있습니다.

입력

입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋의 형식은 다음과 같습니다.

N M cap
src dest
c(1,1) c(1,2) d(1)
c(2,1) c(2,2) d(2)
...
c(N,1) c(N,2) d(N)
s(1)
s(2)
...
s(M)

첫 줄에는 세 정수 NN, MM, capcap 이 주어집니다. NN (1≤N≤30001 \le N \le 3000) 은 도로의 개수, MM (1≤M≤3001 \le M \le 300) 은 LPG 주유소의 개수, capcap (1≤cap≤2001 \le cap \le 200) 은 리터 단위의 탱크 용량입니다. 다음 줄에는 출발 도시 srcsrc 와 목적지 도시 destdest 의 이름이 주어지며, 목적지는 언제나 출발 도시와 다릅니다. 이어지는 NN 개의 줄은 도로를 나타냅니다. ii 번째 도로 (1≤i≤N1 \le i \le N) 는 서로 다른 두 도시 ci,1c_{i,1} 과 ci,2c_{i,2} 를 정수 거리 did_i (0<di≤20000 < d_i \le 2000, 킬로미터) 로 잇고, 양방향으로 오갈 수 있습니다. 서로 다른 두 도로가 같은 도시 쌍을 잇는 경우는 없으며, 각 항목은 공백 하나로 구분됩니다. 그다음 MM 개의 줄에는 LPG 주유소가 있는 도시들의 이름이 주어지며, 주유소가 있는 도시에는 도로가 적어도 하나 있습니다.

도시 이름은 최대 15자이며, 영문자(대소문자를 구분하는 'A'-'Z' 와 'a'-'z')만 사용합니다.

세 개의 0으로 이루어진 줄이 입력의 끝을 나타냅니다.

출력

각 데이터셋마다, 출발 도시에서 목적지 도시까지 갈 수 있는 가장 짧은 여정의 길이(킬로미터)를 한 줄에 출력하세요. 나카무라가 목적지에 도착할 수 없다면 −1-1 을 출력합니다. 그 밖의 다른 문자는 출력하지 마세요.

실제 탱크 용량은 보통 사양표보다 조금 더 크므로, 남은 연료가 정확히 0이 되는 순간에도 그 도시에 도착할 수 있다고 가정합니다. 또한 목적지에서는 항상 연료를 채울 수 있으므로 돌아오는 길은 고려하지 않아도 됩니다.

예제1

  1. 예제 1

    입력
    6 3 34
    Tokyo Kyoto
    Tokyo Niigata 335
    Tokyo Shizuoka 174
    Shizuoka Nagoya 176
    Nagoya Kyoto 195
    Toyama Niigata 215
    Toyama Kyoto 296
    Nagoya
    Niigata
    Toyama
    6 3 30
    Tokyo Kyoto
    Tokyo Niigata 335
    Tokyo Shizuoka 174
    Shizuoka Nagoya 176
    Nagoya Kyoto 195
    Toyama Niigata 215
    Toyama Kyoto 296
    Nagoya
    Niigata
    Toyama
    0 0 0
    
    예상 출력
    846
    -1