열차 지연

시간 제한5초메모리 제한128 MB

요약
매시간 반복 운행하며 확률적으로 지연되는 열차 시간표에서 출발지부터 목적지까지 기대 총 이동시간의 최솟값을 정확한 분수로 구합니다.
난이도

어려움10점 중 8점

유형
최단 경로, 동적 계획법, 그래프, 수학
정답자
아직 제출이 없습니다

문제

열차를 갈아타며 목적지까지 이동하려고 한다. 이동에 걸리는 시간을 최대한 줄이고 싶지만, 열차는 지연될 수 있다.

각 열차에 대해 정시 출발 시각, 지연되지 않았을 때의 소요 시간, 지연될 확률, 그리고 지연될 때의 최대 지연 시간을 알고 있다. 각 열차가 지연되는지 여부는 서로 독립이며, 어떤 열차가 지연되는지는 미리 알 수 없고 실제로 지연이 발생할 때 비로소 알게 된다.

열차는 항상 정시에 출발하며, 도착 시각만 늦어질 수 있다. 환승에 걸리는 시간은 0이므로, 어떤 열차에서 내린 시각과 같은 시각에 출발하는 열차에 곧바로 탈 수 있다. 이동 도중 지연이 발생하면 그에 맞추어 남은 계획을 바꿀 수 있다. 첫 열차를 타는 시각은 자유롭게 정할 수 있으므로 첫 열차를 기다릴 필요는 없다.

주어진 시간표에 대해, 출발 도시에서 도착 도시까지 이동하는 데 걸리는 시간의 기댓값의 최솟값을 구하여라.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 테스트 케이스의 개수는 100개를 넘지 않는다.

각 테스트 케이스의 첫째 줄에는 출발 도시의 이름과 도착 도시의 이름이 주어지며, 두 이름은 항상 서로 다르다. 다음 줄에는 열차의 수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 이어지는 nn개의 줄에는 각각 한 대의 열차 정보가 다음 여섯 개의 값으로 주어진다.

  • 출발 도시와 도착 도시 (두 이름은 항상 서로 다르다)
  • 출발 분 mm (0≤m≤590 \le m \le 59): 열차는 한 시간에 한 편씩 있으며 항상 mm분에 출발한다
  • 지연되지 않았을 때의 소요 시간 tt (1≤t≤3001 \le t \le 300), 단위는 분이다
  • 지연될 확률 pp (0≤p≤1000 \le p \le 100), 단위는 퍼센트이다
  • 최대 지연 시간 dd (1≤d≤1201 \le d \le 120), 단위는 분이다

열차가 지연될 때, 지연 시간은 [1,d][1, d] 구간에서 균일하게 뽑힌 정수 분이다. 모든 도시의 이름은 알파벳 대문자와 소문자로만 이루어지며 길이는 20을 넘지 않는다.

출력

각 테스트 케이스에 대해, 이동 시간의 기댓값의 최솟값을 기약분수 p/q 형태로 출력한다. 이때 q≥1q \ge 1이고 gcd⁡(p,q)=1\gcd(p, q) = 1이며, 값이 정수 aa이면 a/1로 출력한다. 도착 도시에 갈 수 없는 경우에는 대신 IMPOSSIBLE을 출력한다.

입력의 모든 값이 유리수이므로 이동 시간의 기댓값은 항상 유리수이며, 위와 같은 분수로 정확히 나타낼 수 있다.

예제6

  1. 예제 1

    입력
    3
    Seoul Daejeon
    3
    Seoul Daejeon 15 68 10 5
    Seoul Daejeon 46 55 50 60
    Daejeon Busan 14 226 10 120
    Seoul Daejeon
    1
    Seoul Busan 10 22 5 10
    Seoul Daejeon
    9
    Seoul Gwangmyeong 15 10 0 1
    Seoul Gwangmyeong 45 10 0 1
    Seoul Cheonan 23 140 10 15
    Gwangmyeong Busan 44 51 60 70
    Busan Incheon 55 147 38 40
    Incheon Daejeon 24 15 30 15
    Incheon Daejeon 54 15 10 35
    Cheonan Anyang 45 140 5 10
    Anyang Incheon 46 96 10 20
    
    예상 출력
    683/10
    IMPOSSIBLE
    2135373/7000
  2. 예제 2

    입력
    1
    Alpha Bravo
    1
    Alpha Bravo 0 10 0 1
    
    예상 출력
    10/1
  3. 예제 3

    입력
    1
    Alpha Bravo
    1
    Alpha Bravo 0 10 100 4
    
    예상 출력
    25/2
  4. 예제 4

    입력
    1
    Home Work
    2
    Home Work 0 20 50 10
    Home Work 0 18 100 8
    
    예상 출력
    45/2
  5. 예제 5

    입력
    1
    Start Goal
    2
    Start Middle 0 5 0 1
    Other Goal 0 5 0 1
    
    예상 출력
    IMPOSSIBLE
  6. 예제 6

    입력
    1
    A C
    2
    A B 10 20 0 1
    B C 45 30 0 1
    
    예상 출력
    65/1