여행 계획 (작은 버전)
시간 제한1초메모리 제한128 MB
정해진 배차 주기로 다니는 여러 노선이 주어질 때, 출발역에서 주어진 시각에 출발해 도착역에 가장 일찍 도착하는 시각을 구한다.
문제
도시의 대중교통망(버스망, 트램망, 지하철망 등)을 그래프로 나타내자. 그래프의 정점은 번으로 번호가 매겨진 정거장에 대응하고, 간선 ()는 정거장 와 사이에 직접 연결이 있음을 뜻한다().
교통 노선은 번으로 번호가 매겨진다. 번 노선은 차량이 정차하는 정거장의 열 과, 이웃한 정거장 사이를 이동하는 데 걸리는 시간 로 정의된다. 은 정거장 에서 로(또는 그 반대로) 가는 데 걸리는 시간이고, 는 에서 으로 가는 시간이며, 이런 식으로 이어진다. 한 노선에 속한 정거장은 모두 서로 다르다(즉 이면 ).
번 노선의 차량은 일정한 배차 간격 로 운행하며, 은 집합 의 원소이다. 차량은 하루 종일 매시 정각(정각을 시 0분이라 하면 )에 정거장 에서 출발하고, 그 뒤로는 배차 간격에 맞춰 정각으로부터 분 뒤, 분 뒤, ... 에 출발한다. 번 노선의 차량은 두 방향, 즉 에서 방향과 에서 방향으로 모두 운행한다. 에서 출발하는 차량의 출발 시각도 에서와 동일하다.
이 교통망에서 출발 정거장 에서 도착 정거장 까지 이동하려고 한다. 이 이동은 항상 가능하며 24시간을 넘기지 않는다고 가정한다. 이동 중에는 원하는 만큼 여러 번 노선을 갈아탈 수 있다. 환승 자체에 걸리는 시간은 이지만, 갈아탈 때 타려는 차량을 기다리는 시간은 고려해야 한다. 목표는 출발 정거장 에서 도착 정거장 까지 가능한 한 빨리 도착하는 것이다.
예를 들어 보자. 아래 그림은 정거장이 개이고 노선이 번과 번 두 개인 교통망을 나타낸다. 번 노선의 차량은 정거장 사이를, 번 노선의 차량은 정거장 사이를 운행한다. 배차 간격은 각각 , 이다. 정거장 사이의 이동 시간은 각 간선 옆에 적혀 있으며, 노선을 구분하기 위해 번과 번 첨자가 붙어 있다.

23시 30분에 정거장 번에 있고 정거장 번으로 가려 한다고 하자. 분을 기다린 뒤 23시 40분에 번 노선을 탈 수 있다. 이때 두 가지 경로가 있다. 첫 번째는 23시 51분에 정거장 번에 도착해 분을 기다린 뒤 23시 54분에 번 노선으로 갈아타 다음 날 0시 16분에 정거장 번에 도착하는 것이다. 두 번째는 번 노선을 계속 타서 0시 8분에 정거장 번에 도착한 뒤 분을 기다려 0시 21분에 번 노선을 타고 0시 31분에 정거장 번에 도착하는 것이다. 따라서 정거장 번에 가장 빨리 도착할 수 있는 시각은 0시 16분이다.
다음을 수행하는 프로그램을 작성하시오.
- 표준 입력에서 교통망, 교통 노선, 출발 정거장 번호 , 도착 정거장 번호 , 그리고 이동을 시작하는 시각의 시와 분 , 를 읽는다.
- 출발 정거장 에서 도착 정거장 까지 이동하는 데 걸리는 가장 짧은 시간을 구한다.
- 도착 정거장 에 도착할 수 있는 가장 빠른 시각의 시 와 분 를 표준 출력에 쓴다.
입력
표준 입력의 첫째 줄에는 공백 하나로 구분된 여섯 개의 정수가 주어진다.
- 정거장의 수 ()
- 노선의 수 ()
- 출발 정거장 번호 ()
- 도착 정거장 번호 ()
- 이동을 시작하는 시각의 시 ()
- 이동을 시작하는 시각의 분 ()
정거장은 번부터 번까지, 노선은 번부터 번까지 번호가 매겨진다. 이어지는 개의 줄에 각 노선의 정보가 주어지며, 한 노선의 정보는 연속한 세 줄에 걸쳐 주어진다.
- 번 노선의 첫째 줄에는 공백으로 구분된 두 정수 과 이 주어진다. 은 정거장의 수()이고, 은 배차 간격()이다.
- 번 노선의 둘째 줄에는 서로 다른 개의 정수 이 공백으로 구분되어 주어진다. 이는 번 노선이 지나는 정거장의 번호를 순서대로 나열한 것이다().
- 번 노선의 셋째 줄에는 개의 정수 이 공백으로 구분되어 주어진다. 이는 이 노선의 이웃한 정거장 사이를 이동하는 데 걸리는 시간(분)이다().
모든 노선의 정거장 수의 합은 을 넘지 않는다(즉 ).
출력
표준 출력의 한 줄에 공백으로 구분된 두 정수를 출력한다. 도착 정거장에 가장 빨리 도착할 수 있는 시각의 시 ()와 분 ()이다. 도착 시각이 다음 날로 넘어가더라도 하루(시간)로 나눈 나머지에 해당하는 시각을 출력한다.