그래도 시간은 흐른다

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

요약
주기 phi인 간선은 t mod phi = 0인 시각에만 탈 수 있고 대기가 허용되지 않을 때, 정점 T에 도달하는 최소 시각을 구한다.
난이도

보통10점 중 7점

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

문제

삶은 수많은 사건들로 이루어져 있다.

한 사건에서 다음 사건으로 이어지는 길은 곧 선택이다.

그러나 모든 선택이 언제나 허락되는 것은 아니다. 선택은 특정한 순간(주기)에만 열리며, 기회는 기다려주지 않는다. 한 번 선택을 내리면, 그만큼의 시간은 반드시 흘러간다.

당신은 시각 00, 출발 사건 SS에서 삶을 시작한다.

흐르는 시간 속에서 사건과 선택을 거듭하며, 목표 사건 TT에 도달하려 한다. 당신이 도달할 수 있는 가장 빠른 순간은 언제일까?

만약 어떤 선택을 해도 목표에 닿을 수 없다면, 그것은 인연이 닿지 않은 것이다.

정점의 개수 NN, 유향 간선의 개수 MM이 주어진다. 간선 e=(u→v)e=(u \to v)는 이동 시간 cc, 활성 주기 ϕ\phi를 가진다.

시각 tt에 간선을 타려면 t mod ϕ=0t \bmod \phi = 0 이어야 하며, 기다림(대기)은 허용되지 않는다.

또한 주기 상수 KK가 주어지며, 모든 간선의 주기 ϕ\phi는 항상 KK의 약수이다.

간선을 타면 시각은 t→t+ct \rightarrow t + c로 증가한다.

시각 00, 출발 정점 SS에서 시작해 도착 정점 TT에 도달할 수 있는 최소 도착 시각을 구하라.

도달 불가능하다면 −1-1을 출력하라.

입력

첫째 줄에 다섯 정수 N,M,K,S,TN, M, K, S, T가 주어진다. 다음 MM개의 줄에 간선 정보 u_i,v_i,c_i,ϕ_iu\_i, v\_i, c\_i, \phi\_i가 주어진다. (1≤u_i,v_i≤N,u_i≠v_i)(1 \le u\_i, v\_i \le N, u\_i \neq v\_i)

출력

SS에서 TT까지 도달 가능한 경로 중 최소 도착 시각을 출력한다. 도달이 불가능한 경우 −1-1을 출력한다.

제한

  • 1≤N≤100,0001 \le N \le 100{,}000
  • 1≤M≤200,0001 \le M \le 200{,}000
  • 1≤K≤301 \le K \le 30
  • 1≤S,T≤N1 \le S, T \le N, S≠TS \ne T
  • 1≤c_i≤1091 \le c\_i \le 10^{9}
  • 1≤ϕ_i≤K1 \le \phi\_i \le K, 그리고 ϕ_i\phi\_i 는 KK의 약수

힌트

첫번째 예제는 시작 시각은 00으로 시작한다.

1→21\to2 (c=5c=5, ϕ=1\phi=1): 0 mod 1=00 \bmod 1 = 0이므로 허용. 도착 시각 55

2→32\to3 (c=1c=1, ϕ=1\phi=1): 5 mod 1=05 \bmod 1 = 0이므로 허용. 도착 시각 66

3→43\to4 (c=2c=2, ϕ=3\phi=3): 6 mod 3=06 \bmod 3 = 0이므로 허용. 최종 도착 시각 88.

직행 1→41\to4 (c=10c=10, ϕ=2\phi=2)도 가능하지만 도착 시각이 1010으로 더 늦다. 따라서 최솟값은 88.

두번째 예제는 다른 경로가 없어 TT에 도달할 수 없으므로 정답은 −1-1.

예제2

  1. 예제 1

    입력
    4 4 6 1 4
    1 2 5 1
    2 3 1 1
    3 4 2 3
    1 4 10 2
    
    예상 출력
    8
    
  2. 예제 2

    입력
    3 2 4 1 3
    1 2 1 2
    2 3 2 2
    
    예상 출력
    -1