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

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

산책 계획

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

요약
가중치가 있는 방향 그래프에서 s에서 t까지 최소 k개의 간선을 사용하는 최소 총 길이의 보행을 각 질의마다 구한다.
난이도

어려움10점 중 8점

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

문제

바이트타운에는 nn개의 교차로가 있고, mm개의 일방통행 도로가 이들을 잇는다. 교차로에는 1,2,…,n1,2,\dots,n의 번호가 붙어 있다. 리틀 Q는 스포츠 산책을 아주 좋아해서 qq일 동안 산책할 계획을 세웠다. ii번째 날에 리틀 Q는 sis_i번 교차로에서 출발하여 도로를 따라 적어도 kik_i번 이동한 뒤 마지막으로 tit_i번 교차로에 도착하려 한다. 여기서 kik_i는 필요한 이동 횟수이지 도로 개수가 아니다. 같은 도로를 여러 번 이용해도 된다.

리틀 Q의 스마트폰은 산책 경로를 기록한다. 리틀 Q는 건강보다 통계에 더 관심이 많다. 그래서 그는 매일 산책한 총 길이를 최소화하려 한다. 그의 최적 경로를 찾는 프로그램을 작성하시오.

입력

첫째 줄에는 테스트 케이스의 수 TT가 주어진다. (1≤T≤101 \leq T \leq 10) 각 테스트 케이스는 다음과 같다.

첫째 줄에는 교차로의 수 nn과 일방통행 도로의 수 mm이 주어진다. (2≤n≤502 \leq n \leq 50, 1≤m≤10 0001 \leq m \leq 10\,000)

다음 mm개 줄에는 각각 세 정수 uiu_i, viv_i, wiw_i가 주어진다. 이는 uiu_i번 교차로에서 viv_i번 교차로로 가는 길이 wiw_i인 일방통행 도로를 나타낸다. (1≤ui,vi≤n1 \leq u_i, v_i \leq n, ui≠viu_i \neq v_i, 1≤wi≤10 0001 \leq w_i \leq 10\,000)

그다음 줄에는 날의 수 qq가 주어진다. (1≤q≤100 0001 \leq q \leq 100\,000)

다음 qq개 줄에는 각각 세 정수 sis_i, tit_i, kik_i가 주어진다. 이는 산책 계획을 나타낸다. (1≤si,ti≤n1 \leq s_i, t_i \leq n, 1≤ki≤10 0001 \leq k_i \leq 10\,000)

출력

각 산책 계획마다 산책한 총 길이의 최솟값을 한 줄에 하나씩 출력한다. 답이 없으면 "-1"을 출력한다.

예제1

  1. 예제 1

    입력
    2
    3 3
    1 2 1
    2 3 10
    3 1 100
    3
    1 1 1
    1 2 1
    1 3 1
    2 1
    1 2 1
    1
    2 1 1
    
    예상 출력
    111
    1
    11
    -1