가중치가 증가하는 최단 경로
시간 제한15초메모리 제한256 MB
가중치가 엄격히 증가하고 간선을 최대 C개 쓰는 A에서 B까지 최소 합 경로를 구합니다.
문제
"인생은 이야기를 지어낼 만큼 길지 않다"라고 Ahmed Aly가 말했다. 그래서 이 문제도 곧바로 본론으로 들어간다.
정점이 개인 가중치 방향 그래프가 주어진다. 정점 번호는 번부터 번까지이고, 간선의 가중치는 모두 양의 정수이며 서로 다르다.
쿼리는 세 정수 , , 로 주어진다. 정점 에서 출발해 정점 에서 끝나고, 간선을 개 이하로 쓰며, 지나는 간선의 가중치가 진행 방향으로 갈수록 커지는 경로를 생각한다. 즉 각 간선의 가중치는 바로 앞에 지난 간선의 가중치보다 커야 한다. 경로의 첫 간선에는 이 조건이 붙지 않는다.
쿼리마다 이런 경로의 간선 가중치 합 중 가장 작은 값을 구한다.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다 ().
각 테스트 케이스의 첫째 줄에는 정점의 수 , 간선의 수 , 쿼리의 수 가 공백 하나로 구분되어 주어진다 (, , ).
이어지는 개 줄에는 각각 세 정수 , , 가 공백 하나로 구분되어 주어진다 (, , ). 정점 에서 정점 로 가는 가중치 의 간선을 뜻한다. 같은 두 정점을 잇는 간선이 여러 개 있을 수도 있다.
이어지는 개 줄에는 각각 세 정수 , , 가 공백 하나로 구분되어 주어진다 (, , ). 위에서 설명한 쿼리 하나를 뜻한다.
출력
각 쿼리마다 조건을 만족하는 경로의 최소 가중치 합을 한 줄에 출력한다. 조건을 만족하는 경로가 없으면 을 출력한다. 테스트 케이스 사이에 빈 줄을 넣지 않는다.