지하철 타기 (작은 입력)
시간 제한5초메모리 제한512 MB
노선별 승차 대기 시간과 터널 도보 시간을 더해 출발역에서 도착역까지 가장 빠른 이동 시간을 구합니다.
문제
톰은 도시의 지하철을 타고 역에서 역으로 이동한다.
이 도시의 지하철은 다음과 같이 운행한다.
- 도시에는 지하철 노선이 개 있다. 노선 1, 노선 2, ..., 노선 이다.
- 노선 에는 역이 개 있고, 한쪽 종점에서 반대쪽 종점까지 차례대로 이다. 열차는 양방향으로 다닌다. 즉 방향과 방향이 모두 있다. 어느 역에서나 열차를 타고 어느 역에서나 내릴 수 있다. 이웃한 두 역 사이를 이동하는 데는 시간이 걸린다. 에서 까지 분, 에서 까지 분이 걸리고 나머지도 같은 방식이다. 반대 방향으로 이동할 때도 시간은 같다.
- 환승 통로가 개 있다. 통로 하나는 서로 다른 두 노선의 역을 잇는다. 통로를 걸어서 지나는 데는 정해진 시간이 걸리며, 어느 방향으로 지나도 시간은 같다. 통로 한쪽 끝의 역에서 내린 다음 통로를 걸어 반대쪽 끝의 역으로 갈 수 있다.
- 노선 의 역에서 열차를 타려면 분을 기다려야 한다. 출발역에서 처음 열차를 탈 때도 마찬가지다.
이제 한 역에서 다른 역까지 이동하려고 한다. 걸리는 시간의 최솟값을 구하라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어서 테스트 케이스가 개 주어진다.
각 테스트 케이스는 노선의 개수 이 적힌 줄로 시작한다. 이어서 노선 개의 정보가 주어진다. 노선 하나의 정보는 역의 개수 와 대기 시간 가 적힌 줄로 시작한다. 다음 줄에는 정수 개 이 주어지며, 이웃한 두 역 사이의 이동 시간이다.
노선 정보 다음 줄에는 환승 통로의 개수 이 주어진다. 이어지는 개의 줄에는 정수 5개 , , , , 가 주어진다. 이 통로는 역 과 역 를 잇고, 걸어서 지나는 데 분이 걸린다.
다음 줄에는 질의의 개수 가 주어진다. 이어지는 개의 줄에는 정수 4개 , , , 가 주어지며, 역 에서 역 까지 이동한다는 뜻이다.
제한
- 한 테스트 케이스에 있는 역의 총 개수는 100 이하이다.
- ,
- ,
- 와 는 서로 다르다.
- ,
- ,
- 역 과 역 는 서로 다르다.
출력
각 테스트 케이스마다 먼저 Case #x:를 출력한다. 여기서 x는 테스트 케이스 번호이고 1부터 시작한다. 그 다음 개의 줄에 질의의 답을 순서대로 한 줄에 하나씩 출력한다. 각 줄에는 그 질의에서 걸리는 시간의 최솟값을 정수로 출력하고, 이동할 수 없으면 -1을 출력한다.
힌트
첫 번째 예제의 첫 테스트 케이스에서는 노선 1의 1번 역에서 노선 2의 4번 역까지 간다. 가장 빠른 방법은 다음과 같다.
- 노선 1의 열차를 3분 기다렸다가 탄다.
- 3분 동안 타고 2번 역에서 내린다.
- 환승 통로를 1분 동안 걸어 노선 2의 2번 역으로 간다.
- 노선 2의 열차를 2분 기다렸다가 탄다.
- 2분 동안 타고 4번 역에서 내린다.
걸린 시간은 분이다.