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

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

정기검진

시간 제한1.5초메모리 제한256 MB

요약
강으로 나뉜 그래프에서 다리 B개를 건널 수 있을 때, 집에서 병원까지 가는 최단 시간을 묻는 Q개의 질의에 답하고 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

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

문제

디디플래닛 주민은 정기검진을 받으러 병원에 간다.

디디플래닛에는 집이 NN개(1,2,…,N1, 2, \dots, N번), 병원이 MM개(N+1,N+2,…,N+MN+1, N+2, \dots, N+M번) 있다. 집이 모여 있는 구역과 병원이 모여 있는 구역은 깊은 강으로 갈라져 있다. 강을 건너려면 반드시 다리를 지나야 한다. 다리는 BB개(N+M+1,N+M+2,…,N+M+BN+M+1, N+M+2, \dots, N+M+B번)이고, 어느 다리든 건너는 데 걸리는 시간은 00초라고 가정한다.

디디플래닛에는 집, 병원, 다리를 잇는 도로가 KK개 있다. 다리와 다리를 잇는 도로도 있을 수 있다. 다만 집이 있는 구역과 병원이 있는 구역 사이에는 깊은 강이 흐르므로, 집과 병원을 직접 잇는 도로는 없다.

질문 QQ개에 답해야 한다.

  • SiS_i번 집에 사는 주민이 EiE_i번 병원까지 가는 데 걸리는 최소 시간은 얼마인가?

입력

첫째 줄에 집의 수 NN과 병원의 수 MM (1≤N,M≤10 0001 \le N, M \le 10\,000), 다리의 수 BB (1≤B≤1001 \le B \le 100), 도로의 수 KK (1≤K≤2×1041 \le K \le 2 \times 10^4), 질문의 수 QQ (1≤Q≤1051 \le Q \le 10^5)가 공백으로 구분되어 주어진다.

둘째 줄부터 KK개 줄에 정수 aa, bb, KiK_i가 공백으로 구분되어 주어진다. 지점 aa와 지점 bb를 잇는 도로가 있고, 그 도로를 지나는 데 KiK_i (1≤Ki≤1091 \le K_i \le 10^9)의 시간이 든다는 뜻이다.

그다음 QQ개 줄에 질문의 SiS_i와 EiE_i가 공백으로 구분되어 주어진다. (1≤Si≤N1 \le S_i \le N, N+1≤Ei≤N+MN+1 \le E_i \le N+M)

출력

ii번째 줄에 ii번째 질문의 답을 출력한다. SiS_i번 집에서 EiE_i번 병원으로 갈 수 없으면 −1-1을 출력한다.

예제4

  1. 예제 1

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

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

    입력
    1 1 2 4 1
    1 3 10
    1 4 1
    2 3 1
    2 4 100
    1 2
    
    예상 출력
    11
    
  4. 예제 4

    입력
    1 1 2 3 1
    1 3 5
    3 4 2
    4 2 7
    1 2
    
    예상 출력
    14