신호등

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

요약
각 교차로에 두 색이 주기적으로 바뀌는 신호등이 있고, 양 끝 교차로의 신호가 같을 때만 도로를 건널 수 있을 때 출발지에서 도착지까지 가장 빠른 도착 시각을 구한다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 수학, 구현
정답자
아직 제출이 없습니다

문제

케노샤(Kenosha) 시에는 NN개의 교차로가 있으며 1…N1 \ldots N로 번호가 매겨져 있고, 이들을 잇는 MM개의 도로가 1…M1 \ldots M로 번호가 매겨져 있다. 같은 교차로 쌍을 잇는 도로는 둘 이상 존재하지 않으며, 자기 자신을 잇는 도로도 없다. 교차로 ii와 jj 사이의 정수 이동 시간 TijT_{ij}는 양방향으로 동일하다. 즉 Tij=TjiT_{ij} = T_{ji}이다.

각 교차로에는 신호등이 하나씩 있으며 파란색 또는 보라색 두 가지 색 중 하나를 나타낸다. 각 신호등은 일정 시간 동안 파란색을 켰다가 다른 일정 시간 동안 보라색을 켜는 것을 주기적으로 반복한다. 어떤 도로로 출발하는 바로 그 순간에 그 도로 양 끝 두 교차로의 신호등 색이 같을 때에만 그 도로로 진입할 수 있다. 이동하는 도중에 두 신호등의 색이 계속 같을 필요는 없다.

차량이 신호가 바뀌는 바로 그 순간에 교차로에 도착하면 새 색을 따른다. 차량은 교차로에서 원하는 만큼 대기할 수 있다. 각 교차로 ii에 대해 파란색 지속 시간 DBiDB_i, 보라색 지속 시간 DPiDP_i, 초기 색 CiC_i(파란색이면 B, 보라색이면 P), 그리고 그 초기 색이 처음으로 바뀌기까지 남은 시간 RiR_i가 주어진다.

시각 00에 출발 교차로 SS에서 출발하여, 도착 교차로 DD(D≠SD \ne S)에 이르는 최소 시간을 구하여라.

제약 조건: 2≤N≤3002 \le N \le 300, 1≤M≤14,0001 \le M \le 14{,}000, 1≤Tij≤1001 \le T_{ij} \le 100, 1≤DBi≤1001 \le DB_i \le 100, 1≤DPi≤1001 \le DP_i \le 100, 1≤Ri≤1001 \le R_i \le 100, 1≤S,D≤N1 \le S, D \le N.

예시 설명. 교차로 4개와 도로 5개가 있고, 차량이 교차로 1에서 교차로 4로 가려는 상황을 생각하자.

교차로초기 색남은 시간파란색 지속보라색 지속
1B21699
2P63213
3P2874
4P389649

도로(이동 시간): 1-2 (4), 1-3 (40), 2-3 (75), 2-4 (76), 3-4 (77).

최소 시간은 경로 1 -> 2 -> 4를 따라 127이다.

  • 교차로 1은 파란색으로 시작하지만 교차로 2는 보라색이므로, 차량은 교차로 1이 보라색으로 바뀔 때까지 2초 대기한 뒤 4초 동안 이동하여 시각 6에 교차로 2에 도착한다.
  • 시각 6에 교차로 2가 파란색으로 바뀌지만, 교차로 4는 32초 더 보라색을 유지한다. 그 32초가 지나면 교차로 2가 보라색으로 바뀌는 순간에 교차로 4가 파란색으로 바뀌므로 여전히 색이 다르다. 차량은 교차로 2가 파란색이 될 때까지 13초 더 대기한다. 이제 둘 다 파란색이므로 76초 동안 이동하여 교차로 4에 도착한다.
  • 총 시간: 2+4+32+13+76=1272 + 4 + 32 + 13 + 76 = 127초.

입력

  • 첫째 줄: 두 정수 SS와 DD가 공백으로 구분되어 주어진다.
  • 둘째 줄: 두 정수 NN과 MM이 공백으로 구분되어 주어진다.
  • 3번째 줄부터 N+2N+2번째 줄까지: i+2i+2번째 줄은 교차로 ii를 나타내며, 문자 하나와 정수 셋이 공백 하나로 구분되어 CiC_i, RiR_i, DBiDB_i, DPiDP_i 순서로 주어진다.
  • N+3N+3번째 줄부터 N+M+2N+M+2번째 줄까지: N+2+kN+2+k번째 줄은 도로 kk를 나타내며, 세 정수 ii, jj, TijT_{ij}가 주어진다.

출력

  • 첫째 줄: 출발 교차로에서 도착 교차로까지의 최소 시간을 나타내는 정수 하나를 출력한다. 경로가 존재하지 않으면 00을 출력한다.

예제2

  1. 예제 1

    입력
    1 4
    4 5
    B 2 16 99
    P 6 32 13
    P 2 87 4
    P 38 96 49
    1 2 4
    1 3 40
    2 3 75
    2 4 76
    3 4 77
    
    예상 출력
    127
    
  2. 예제 2

    입력
    1 2
    2 1
    B 5 10 10
    B 5 10 10
    1 2 7
    
    예상 출력
    7