연결

아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

바이트오시아(Byteotia) 기반시설부는 도시들 사이를 잇는 경로의 길이를 빠르게 알려 주는 프로그램을 만들려고 한다. 보통은 가장 짧은 경로를 찾지만, 여기서는 kk번째로 짧은 경로를 찾는다. 경로에는 순환이 있을 수 있으므로 같은 도시를 여러 번 지날 수도 있다.

예를 들어 두 도시를 잇는 경로가 네 개 있고 그 길이가 각각 22, 44, 44, 55라면, 가장 짧은 경로의 길이는 22, 두 번째로 짧은 경로의 길이는 44, 세 번째는 44, 네 번째는 55이다. 길이가 같은 경로도 각각 따로 센다.

경로는 항상 도로를 하나 이상 지나므로, 출발 도시와 도착 도시가 같은 경로는 반드시 순환을 이루어야 한다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 바이트오시아의 도로망과 경로 길이에 대한 질의들을 읽는다.
  • 각 질의의 답을 계산하여 표준 출력에 쓴다.

입력

첫째 줄에 공백으로 구분된 두 정수 nnmm이 주어진다. 1n1001 \le n \le 100이고 0mn2n0 \le m \le n^2 - n이다. 각각 도시의 수와 도로의 수이다. 도시는 11번부터 nn번까지 번호가 매겨져 있다.

이어지는 mm개의 줄에는 공백으로 구분된 세 정수 aa, bb, ll이 주어진다. aba \ne b이고 1l5001 \le l \le 500이다. 각 줄은 도시 aa에서 도시 bb로 가는 길이 ll짜리 일방통행 도로 하나를 나타낸다. 임의의 순서쌍인 두 도시 사이에 그 방향으로 가는 도로는 최대 하나만 있다.

그다음 줄에는 질의의 수를 나타내는 정수 qq가 주어지며 1q100001 \le q \le 10000이다. 이어지는 qq개의 줄에는 각각 공백으로 구분된 세 정수 cc, dd, kk가 주어지며 1k1001 \le k \le 100이다. 각 질의는 도시 cc에서 도시 dd로 가는 kk번째로 짧은 경로의 길이를 묻는다.

출력

질의가 주어진 순서대로 각 질의의 답을 한 줄에 하나씩 출력한다. ii번째 질의에 대해서는 구하는 경로의 길이를 정수 하나로 출력하고, 그러한 경로가 kk개보다 적으면 1-1을 출력한다.