가중치가 증가하는 최단 경로

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

문제

"인생은 이야기를 지어낼 만큼 길지 않다"라고 Ahmed Aly가 말했다. 그래서 이 문제도 곧바로 본론으로 들어간다.

정점이 NN개인 가중치 방향 그래프가 주어진다. 정점 번호는 11번부터 NN번까지이고, 간선의 가중치는 모두 양의 정수이며 서로 다르다.

쿼리는 세 정수 AA, BB, CC로 주어진다. 정점 AA에서 출발해 정점 BB에서 끝나고, 간선을 CC개 이하로 쓰며, 지나는 간선의 가중치가 진행 방향으로 갈수록 커지는 경로를 생각한다. 즉 각 간선의 가중치는 바로 앞에 지난 간선의 가중치보다 커야 한다. 경로의 첫 간선에는 이 조건이 붙지 않는다.

쿼리마다 이런 경로의 간선 가중치 합 중 가장 작은 값을 구한다.

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다 (1T1001 \le T \le 100).

각 테스트 케이스의 첫째 줄에는 정점의 수 NN, 간선의 수 MM, 쿼리의 수 QQ가 공백 하나로 구분되어 주어진다 (2N1502 \le N \le 150, 0M30000 \le M \le 3000, 1Q10001 \le Q \le 1000).

이어지는 MM개 줄에는 각각 세 정수 XX, YY, ZZ가 공백 하나로 구분되어 주어진다 (1X,YN1 \le X, Y \le N, 1Z30001 \le Z \le 3000, XYX \ne Y). 정점 XX에서 정점 YY로 가는 가중치 ZZ의 간선을 뜻한다. 같은 두 정점을 잇는 간선이 여러 개 있을 수도 있다.

이어지는 QQ개 줄에는 각각 세 정수 AA, BB, CC가 공백 하나로 구분되어 주어진다 (1A,BN1 \le A, B \le N, 0CM0 \le C \le M, ABA \ne B). 위에서 설명한 쿼리 하나를 뜻한다.

출력

각 쿼리마다 조건을 만족하는 경로의 최소 가중치 합을 한 줄에 출력한다. 조건을 만족하는 경로가 없으면 1-1을 출력한다. 테스트 케이스 사이에 빈 줄을 넣지 않는다.