지하철 타기 (라지)
시간 제한5초메모리 제한512 MB
같은 노선에 탈 때마다 대기 시간을 더하고 터널로 환승하며 두 지하철역 사이 가장 빠른 경로를 구합니다.
문제
톰은 도시의 지하철을 타고 역에서 역으로 이동한다.
이 도시의 지하철은 다음과 같이 운행한다.
- 도시에는 지하철 노선이 개 있고, 1번부터 번까지 번호가 붙어 있다.
- 번 노선에는 역이 개 있고, 한쪽 끝에서 반대쪽 끝까지 순서대로 이다. 열차는 양방향으로 운행하므로 로 가는 열차와 로 가는 열차가 모두 있다. 어느 역에서나 탈 수 있고 어느 역에서나 내릴 수 있다. 에서 까지 가는 데 분이 걸리며, 반대 방향도 같은 시간이 걸린다.
- 환승 통로가 개 있다. 각 통로는 서로 다른 노선에 속한 두 역을 잇고, 어느 방향으로 걸어가도 같은 시간이 걸린다. 통로의 한쪽 끝 역에서 내린 다음 통로를 걸어가면 반대쪽 끝 역에 도착한다.
- 번 노선의 열차를 탈 때마다 그 열차를 기다리는 데 분이 걸린다. 열차에 탄 채로 역을 지나갈 때는 시간이 더 들지 않고, 내릴 때도 시간이 들지 않는다.
한 역에서 출발해 다른 역까지 갈 때 걸리는 가장 짧은 시간을 구하라.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다. 이어서 테스트 케이스가 주어진다.
각 테스트 케이스의 첫째 줄에는 노선의 수 이 주어진다. 이어서 노선 개의 정보가 주어진다. 번 노선의 정보는 역의 수 와 기다리는 시간 가 적힌 줄로 시작한다. 다음 줄에는 이웃한 두 역 사이의 이동 시간 이 정수 개로 주어진다.
노선 정보 다음 줄에는 환승 통로의 수 이 주어지고, 이어서 개의 줄이 주어진다. 각 줄에는 정수 다섯 개 , , , , 가 주어진다. 역과 역을 잇는 통로가 있고, 그 통로를 걸어서 지나가는 데 분이 걸린다는 뜻이다.
다음 줄에는 질의의 수 가 주어지고, 이어서 개의 줄이 주어진다. 각 줄에는 정수 네 개 , , , 가 주어지며, 역에서 역까지 이동한다는 뜻이다.
제한:
- 이고, 한 테스트 케이스의 역은 모두 합쳐 1000개 이하다
- , , , ,
- , , ,
- 역과 역은 서로 다르다
출력
각 테스트 케이스마다 Case #x:를 한 줄에 출력한다. x는 1부터 시작하는 테스트 케이스 번호다. 이어서 개의 줄을 출력한다. 번째 줄에는 번째 질의의 최소 이동 시간을 출력하고, 도착할 수 없으면 -1을 출력한다.
힌트
예제 입력의 첫 번째 테스트 케이스에 있는 질의는 1번 노선 1번 역에서 2번 노선 4번 역까지 가는 경우다. 가장 빠른 경로 하나는 다음과 같다.
- 1번 노선 열차를 3분 기다렸다가 탄다.
- 3분 동안 타고 가서 2번 역에서 내린다.
- 환승 통로를 1분 동안 걸어 2번 노선 2번 역으로 간다.
- 2번 노선 열차를 2분 기다렸다가 탄다.
- 2분 동안 타고 가서 4번 역에서 내린다.
걸린 시간은 모두 3 + 3 + 1 + 2 + 2 = 11분이다.