만드는 중입니다

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

고속도로 통행료

시간 제한4초메모리 제한1024 MB

요약
각 통행료에 출발 시각 절댓값의 K배가 더해지는 일방통행 도로에서 1번 도시에서 N번 도시까지의 최소 통행료를 구합니다.
난이도

어려움10점 중 9점

유형
그래프, 최단 경로, 수학
정답자
아직 제출이 없습니다

문제

JOI 왕국은 NN개의 도시로 이루어져 있으며, 도시에는 11번부터 NN번까지 번호가 붙어 있다. JOI 왕국에는 도시를 잇는 일방통행 고속도로가 MM개 있으며, 고속도로에는 11번부터 MM번까지 번호가 붙어 있다. 고속도로 ii(1≤i≤M1 \le i \le M)를 지나면 도시 AiA_i에서 도시 BiB_i로 이동하며, 통행에 걸리는 시간은 LiL_i이다.

고속도로를 지날 때마다 통행료가 든다. 고속도로 ii의 통행료는 최소 CiC_i이지만, JOI 왕국의 노동자는 모두 초과 근무를 싫어하기 때문에 기준 시각 00에서 멀리 떨어질수록 통행료가 늘어난다. 구체적으로, 도시 AiA_i를 시각 tt에 출발해 고속도로 ii를 지나면 통행료는 상수 KK에 대해 Ci+K×∣t∣C_i + K \times |t|이다. 여기서 ∣t∣|t|는 tt의 절댓값이다.

도시 11에 사는 당신은 친구가 있는 도시 NN으로 놀러 가려고 한다. 고속도로만 이용해서 도시 11에서 도시 NN까지 이동하고 싶다. 먼저 이것이 가능한지 확인하고, 가능하다면 통행료 총합의 최솟값을 구하려 한다. 이동 경로와 각 도시를 출발하는 시각은 자유롭게 정할 수 있다. 특히 도시 11을 음수 시각에 출발해도 되고, 고속도로를 타지 않고 어떤 도시에 머물러 있어도 된다.

고속도로 정보와 상수 KK가 주어졌을 때, 고속도로를 통해 도시 11에서 도시 NN까지 이동할 수 있는지 판정하고, 가능하다면 통행료 총합의 최솟값을 출력하는 프로그램을 작성하라.

입력

입력은 다음 형식으로 주어진다.

N M K
A_1 B_1 L_1 C_1
A_2 B_2 L_2 C_2
⋮
A_M B_M L_M C_M

출력

고속도로를 통해 도시 11에서 도시 NN까지 이동할 수 없으면 −1-1을 출력한다. 이동할 수 있다면 통행료 총합의 최솟값을 정수로 한 줄에 출력한다.

제한

  • 2≤N≤4 0002 \le N \le 4\,000
  • 1≤M≤8 0001 \le M \le 8\,000
  • 0≤K≤100 0000 \le K \le 100\,000
  • 1≤Ai≤N1 \le A_i \le N (1≤i≤M1 \le i \le M)
  • 1≤Bi≤N1 \le B_i \le N (1≤i≤M1 \le i \le M)
  • Ai≠BiA_i \ne B_i (1≤i≤M1 \le i \le M)
  • 1≤Li≤1 000 0001 \le L_i \le 1\,000\,000 (1≤i≤M1 \le i \le M)
  • 0≤Ci≤1090 \le C_i \le 10^9 (1≤i≤M1 \le i \le M)
  • 입력되는 모든 값은 정수이다.

예제5

  1. 예제 1

    입력
    4 4 2
    1 2 3 2
    1 3 1 10
    2 3 1 4
    3 4 5 3
    
    예상 출력
    15
    
  2. 예제 2

    입력
    4 4 0
    1 2 3 2
    1 3 1 10
    2 3 1 4
    3 4 5 3
    
    예상 출력
    9
    
  3. 예제 3

    입력
    2 1 10
    2 1 4 7
    
    예상 출력
    -1
    
  4. 예제 4

    입력
    4 3 5
    1 2 3 1
    2 3 1 10
    3 4 7 6
    
    예상 출력
    37
    
  5. 예제 5

    입력
    8 8 2
    1 2 1 5
    5 6 3 1
    2 4 10 18
    3 5 3 1
    1 3 4 2
    5 6 2 2
    2 5 2 3
    6 8 1 1
    
    예상 출력
    25