소 통행료 경로

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

요약
각 질의에 대해 두 목초지를 잇는 경로 비용의 최솟값을 구한다. 비용은 지나는 간선 요금의 합에 경로 위 목초지 요금의 최댓값을 한 번 더한 값이다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

농부 존은 언제나 수익을 늘릴 방법을 찾고 있어서, 소가 농장의 길을 지날 때마다 내야 하는 통행료를 매겼다.

농장에는 11번부터 NN번까지 번호가 붙은 NN개의 목초지가 있다 (1≤N≤2501 \le N \le 250). 목초지들은 MM개의 양방향 길로 연결되어 있으며 (1≤M≤10,0001 \le M \le 10{,}000), jj번째 길은 서로 다른 두 목초지 AjA_j와 BjB_j (1≤Aj,Bj≤N1 \le A_j, B_j \le N)를 잇고 간선 통행료 LjL_j (1≤Lj≤100,0001 \le L_j \le 100{,}000)를 가진다. 같은 두 목초지를 잇는 길이 여러 개 있을 수 있지만, 어떤 길도 한 목초지를 자기 자신과 잇지는 않는다. 임의의 목초지에서 다른 임의의 목초지로 항상 갈 수 있으므로 그래프는 연결되어 있다.

또한 각 목초지 ii에도 통행료 CiC_i (1≤Ci≤100,0001 \le C_i \le 100{,}000)가 매겨져 있다. 한 목초지에서 다른 목초지로 가는 이동 비용은, 지나간 모든 길의 간선 통행료의 합에, 이동 중 지난 모든 목초지(출발 목초지와 도착 목초지 포함)의 통행료 중 최댓값을 한 번 더한 값이다.

소들은 여러 선택지를 비교하고 싶어 한다. KK개의 질의에 답하라 (1≤K≤10,0001 \le K \le 10{,}000). ii번째 질의는 출발 목초지 sis_i와 도착 목초지 tit_i (si≠tis_i \ne t_i)로 주어지며, sis_i에서 tit_i로 가는 이동 비용의 최솟값을 출력해야 한다.

예시. 목초지가 다섯 개이고 각 목초지의 통행료가 C1=2C_1=2, C2=5C_2=5, C3=3C_3=3, C4=3C_4=3, C5=4C_5=4이며, 간선 통행료가 (1,2)=3(1,2)=3, (1,3)=2(1,3)=2, (2,5)=3(2,5)=3, (3,5)=1(3,5)=1, (4,5)=1(4,5)=1, (2,4)=3(2,4)=3, (3,4)=4(3,4)=4라고 하자. 여기서 (a,b)=w(a,b)=w는 목초지 aa와 bb 사이의 길의 간선 통행료가 ww임을 뜻한다.

목초지 11에서 44로 갈 때 1→3→5→41 \to 3 \to 5 \to 4 경로를 택하면, 간선 통행료의 합은 2+1+1=42+1+1=4이고 경로에서 가장 큰 목초지 통행료는 44(목초지 55)이므로 총 비용은 4+4=84+4=8이다.

목초지 22에서 33으로 갈 때 2→5→32 \to 5 \to 3 경로를 택하면, 간선 통행료의 합은 3+1=43+1=4이고 가장 큰 목초지 통행료는 55(목초지 22)이므로 총 비용은 4+5=94+5=9이다.

입력

  • 첫째 줄에 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다.
  • 다음 NN개의 줄에는 각각 정수 하나가 주어진다. 그중 ii번째 줄의 값은 목초지 ii의 통행료 CiC_i이다.
  • 다음 MM개의 줄에는 각각 세 정수 AjA_j, BjB_j, LjL_j가 공백으로 구분되어 주어지며, 목초지 AjA_j와 BjB_j를 잇는 간선 통행료 LjL_j의 양방향 길을 나타낸다.
  • 다음 KK개의 줄에는 각각 두 정수 sis_i와 tit_i가 공백으로 구분되어 주어지며, 하나의 질의를 이룬다.

출력

  • KK개의 줄을 출력한다. ii번째 줄에는 sis_i에서 tit_i로 가는 이동 비용의 최솟값인 정수 하나를 출력한다.

예제3

  1. 예제 1

    입력
    5 7 2
    2
    5
    3
    3
    4
    1 2 3
    1 3 2
    2 5 3
    5 3 1
    5 4 1
    2 4 3
    3 4 4
    1 4
    2 3
    
    예상 출력
    8
    9
    
  2. 예제 2

    입력
    2 1 2
    10
    20
    1 2 5
    1 2
    2 1
    
    예상 출력
    25
    25
    
  3. 예제 3

    입력
    3 4 2
    1
    1
    100
    1 2 10
    1 2 4
    2 3 5
    1 3 50
    1 2
    1 3
    
    예상 출력
    5
    109