자카르타 교통 체증
면접 대비시간 제한1초메모리 제한128 MB
교차로 사이를 이동할 때 각 도로는 정해진 혼잡 시간대에 절반 속도로만 달릴 수 있고 도중에 멈춰 기다릴 수 없다. 교차로가 20개 이하인 그래프에서 출발지에서 도착지까지 걸리는 최소 시간을 소수 둘째 자리까지 구한다.
문제
자카르타의 교통은 매우 혼잡하다. 출퇴근 혼잡 시간대(러시아워)에는 거리가 정체되어, 그 시간 동안에는 평소 속도의 절반으로만 달릴 수 있다. 따라서 약속에 늦지 않으려면 이동 계획을 신중히 세워야 한다.
예를 들어 지점 P에서 지점 Q까지 가는 도로가 평소에는 분 걸리고, 이 도로가 15:00부터 16:00까지 정체된다고 하자. 러시아워와 관련된 몇 가지 상황을 살펴보자.
- 러시아워가 시작되기 분 전(즉 14:45)에 P에서 출발하면, 정체가 시작되기 전까지 평소 속도로 분어치 거리를 이동한다. 남은 거리는 평소 기준 분어치인데, 정체 중에는 속도가 절반이므로 통과하는 데 분이 걸린다. 따라서 P에서 Q까지 총 분이 걸린다.
- 러시아워가 끝나기 직전 분(즉 15:55)에 출발하면, 정체 중인 처음 분 동안 이동한 거리는 평소 속도로 분어치에 해당한다. 남은 거리는 평소 기준 분어치이고 이제 정체가 풀렸으므로 분이 더 걸린다. 따라서 총 분이 걸린다.
- 위 상황들의 다른 조합도 가능하다.
즉, 어떤 순간에 정체 시간대인 도로를 달리고 있으면 그 순간에는 절반 속도로 이동하고, 그 외에는 평소 속도로 이동한다. 각 도로의 러시아워는 하루 안에서만 정의되며 자정을 넘겨 이어지지 않는다.
교차로가 최대 개, 도로가 개인 지도가 주어진다. 출발 지점 에서 목적지 까지 가는 데 걸리는 최소 시간을 분 단위로 구하여라. 도중에 멈추어 기다리지 않고 곧바로 이동한다고 가정한다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 두 정수 ()과 이 주어진다. 은 교차로의 수, 은 도로의 수이다. 교차로는 번부터 번호가 매겨진다.
이어지는 개의 줄에는 각 도로의 정보가 주어진다. 각 줄은 세 정수 , , ()로 시작하며, 이는 교차로 와 교차로 를 잇는 도로가 있고 평소에 이 도로를 지나는 데 분이 걸린다는 뜻이다(도로는 양방향이다). 세 정수 뒤에는 문자 N 또는 R이 온다. N은 그 도로에 러시아워가 없다는 뜻이며 뒤에 다른 값이 오지 않는다. R 뒤에는 러시아워의 시작 시각과 종료 시각이 hh:mm 형식(00:00부터 23:59까지)으로 주어진다. 러시아워는 자정을 넘겨 이어지지 않는다.
각 테스트 케이스의 마지막 줄에는 출발 지점 , 목적지 , 그리고 현재 시각 가 hh:mm 형식으로 주어진다.
입력의 끝은 두 개의 으로 이루어진 줄로 표시되며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 에서 까지 가는 데 필요한 최소 시간을 분 단위로 한 줄에 출력한다. 소수점 아래 두 자리까지 항상 출력한다.