만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

회복의 여정

시간 제한8초메모리 제한1024 MB

요약
고정된 여정에서 항공편 하나가 출발 순간 취소되면 가장 빠른 대체 경로로 갈아탈 때 생기는 최대 지연 시간을 구합니다. 도달할 수 없으면 stranded를 출력합니다.
난이도

보통10점 중 7점

유형
최단 경로, 그래프, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

여러 경유지를 거치는 국제 여행 중이다. NWERC 진출을 기념하며 여행을 즐기는 중이다. 저비용 항공사로 항공편을 예약하는 경우가 많아, 출발 직전에 항공편이 취소되어 공항에 발이 묶일 위험이 늘 있다. 보통은 다음 항공편을 타면 되지만, NWERC에는 반드시 제시간에 도착해야 한다.

항공편 중 하나가 출발하려는 바로 그 순간 취소되고 나머지 항공편은 모두 계획대로 운항하면, 그 공항에서 최종 목적지까지 가는 새 일정을 예약한다. 항상 가장 빠른 경로를 고른다고 가정할 때, 최악의 경우 얼마나 늦어지는가?

입력

첫 줄에 전체 항공편 수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다.

이후 nn개 줄에 항공편 정보가 주어진다. ii번째 줄에는 공백으로 구분된 네 개의 값이 있다.

  • 출발 공항 코드 sis_i (1≤∣s∣≤201 \le |s| \le 20)
  • ddhh:mm 형식의 출발 시각 (1≤d≤3651 \le d \le 365, 0≤hh≤230 \le hh \le 23, 0≤mm≤590 \le mm \le 59)
  • 도착 공항 코드 tit_i (1≤∣t∣≤201 \le |t| \le 20)
  • ddhh:mm 형식의 도착 시각 (1≤d≤3651 \le d \le 365, 0≤hh≤230 \le hh \le 23, 0≤mm≤590 \le mm \le 59)

다음 줄에는 행程에 포함된 항공편 수 mm (1≤m≤n1 \le m \le n)이 주어진다. 마지막 줄에는 탑승할 순서대로 항공편 번호 f1…fmf_1 \ldots f_m이 주어진다.

항공편은 항상 서로 다른 공항 사이를 오가며, 시간은 엄격하게 앞으로 흐른다. 행程의 연속한 두 항공편 uu, vv에 대해 uu의 도착 시각은 vv의 출발 시각보다 같거나 빠르다.

환승은 즉시 이루어진다. 공항에 도착한 같은 분에 바로 출발할 수 있다. 계획된 항공편이 취소되면, 정확히 같은 시각에 출발하는 다른 항공편에 탑승할 수 있다.

출력

탑승 순간에 주어진 항공편 중 하나가 취소될 때 최대로 늦어질 수 있는 시간을 출력한다. 어떤 경우에도 지연이 없거나 일찍 도착할 수 있다면 00을 출력한다.

항상 목적지에 도착할 수 없다면 대신 stranded를 출력한다.

예제3

  1. 예제 1

    입력
    8
    egnx 0d00:10 delft 0d01:00
    delft 0d01:00 zad 0d09:00
    zad 0d09:01 prg 0d15:30
    prg 0d20:00 delft 1d02:15
    prg 0d22:00 delft 1d04:15
    zad 2d00:00 delft 3d00:00
    egnx 2d00:00 delft 2d02:00
    egnx 2d00:00 delft 2d02:00
    4
    1 2 3 4
    
    예상 출력
    2745
    
  2. 예제 2

    입력
    3
    ork 101d00:00 noc 101d00:01
    ork 100d23:59 noc 101d00:02
    dub 100d00:00 ork 101d00:00
    2
    3 1
    
    예상 출력
    stranded
    
  3. 예제 3

    입력
    2
    lax 0d00:30 hnl 0d06:20
    lax 0d00:30 hnl 0d06:20
    1
    2
    
    예상 출력
    0