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

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

통행료

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

요약
모든 간선이 K개 노드로 이루어진 한 블록에서 다음 블록으로만 향하는 계층형 방향 그래프가 주어질 때, 두 노드 사이 최소 통행료를 묻는 질의에 답하고 경로가 없으면 -1을 출력한다.
난이도

어려움10점 중 8점

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

문제

트럭 운송 회사가 내부 프로세스를 최적화하려 한다. 주된 목적은 비용 절감이다. 이 회사는 모든 도로마다 통행료를 내야 하는 지역에서 영업한다. 각 도로는 두 장소(도시, 마을 등)를 직접 연결한다. 회사에는 여러 주문이 들어오는데, 각 주문은 한 장소에서 다른 장소로 화물을 운반하라는 것이다. 주문을 처리할 때 회사는 전체 통행료를 최소로 내고 싶어 한다. 이 지역의 도로망은 각 간선에 비용(해당 도로의 통행료)이 있는 그래프로 모델링할 수 있으므로, 회사가 실제로 알고 싶은 것은 이 그래프에서 두 노드 사이의 최저 비용 경로의 비용이다.

그런데 이 지역의 도로망 그래프에는 흥미로운 성질이 있다. 방향 그래프이고(즉 모든 도로가 일방통행), 상수 KK에 대해 ⌊b/K⌋=1+⌊a/K⌋\lfloor b/K \rfloor = 1 + \lfloor a/K \rfloor일 때만 aa에서 bb로 가는 간선이 있을 수 있다.

주어진 주문 목록의 각 주문마다 회사가 해당 주문을 처리하기 위해 내야 하는 최소 통행료를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 네 정수 KK(위에서 설명한 의미), NN(장소의 수), MM(도로의 수), OO(주문의 수)가 주어진다.

다음 MM개 줄에는 각각 세 정수 a,b,ta, b, t가 주어진다(0≤a,b<N0 \le a, b < N). 이는 aa에서 bb로 가는 일방통행 도로가 있고 통행료가 tt임을 뜻한다. ⌊b/K⌋=1+⌊a/K⌋\lfloor b/K \rfloor = 1 + \lfloor a/K \rfloor가 성립하며, 두 장소를 하나 이상의 도로가 연결하지 않음이 보장된다.

마지막으로 OO개 줄이 주어지며, 각 줄에는 두 정수 a,ba, b가 있다. 이는 장소 aa에서 장소 bb로 화물을 운반하는 주문이 있음을 뜻한다.

출력

출력은 OO개 줄로 이루어지며, 각 줄에 정수 하나를 출력한다. ii번째 줄에는 ii번째 주문의 두 장소 사이 최저 비용 경로의 통행료를 출력한다. 그러한 경로가 없으면 그 줄에 −1-1을 출력한다.

제한

항상 1≤N≤50 0001 \le N \le 50\,000, 1≤O≤10 0001 \le O \le 10\,000, K≤5K \le 5이다. 또한 모든 주문 a,ba, b에 대해 0≤a<b<N0 \le a < b < N이고, 모든 통행료 tt에 대해 1≤t≤10 0001 \le t \le 10\,000이다. 부분 문제의 입력에는 다음과 같은 추가 제한이 있다.

예제1

  1. 예제 1

    입력
    5 14 5 5
    0 5 9
    5 12 10
    0 7 7
    7 12 8
    4 7 10
    0 12
    0 5
    0 7
    7 12
    0 13
    
    예상 출력
    15
    9
    7
    8
    -1