첫 차 타기

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

요약
인도는 항상 이용할 수 있고 차도는 K분 이후부터 버스로만 이용할 수 있을 때, 1번 건물에서 N번 건물까지의 최소 이동 시간을 구한다.
난이도

보통10점 중 6점

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

문제

현재 11번 건물에 있는 세우는 막차를 놓쳐버렸다. 그래서 세우네 집인 NN번 건물까지 걸어가기로 했다. 그러다 세우는 11번 건물에서 출발할 때, 지금부터 정확히 KK분 후부터 버스 첫 차가 운행하기 시작한다는 것을 깨달았다.

세우네 도시에는 양방향으로 서로 다른 두 개의 건물을 연결하는 XX개의 인도와 YY개의 차도가 있다. 첫 차가 운행하기 시작하는 KK분 이전에는 인도로만 이동할 수 있고, KK분 후부터는 인도로 이동하거나, 버스를 타고 차도로 이동할 수 있다.

세우가 11번 건물에서 출발해 NN번 건물까지 도착하는 데 걸리는 최소 시간을 구하는 프로그램을 작성해 보자.

입력

첫 번째 줄에 각각 건물의 개수, 버스 첫 차가 운행하기 시작하는 시간, 인도의 개수, 차도의 개수를 의미하는 정수 NN, KK, XX, YY가 공백으로 구분되어 주어진다. (3≤N≤200 000(3 \leq N \leq 200 \ 000; 1≤X1 \leq X, Y≤200 000Y \leq 200 \ 000; 1≤K≤109)1 \leq K \leq 10^9)

XX개의 줄에 걸쳐, 1+i1 + i번째 줄에는 각각 ii번째 인도가 연결하는 두 건물과 이동 시간을 뜻하는 정수 s_is\_i, e_ie\_i, d_id\_i가 공백으로 구분되어 주어진다. 임의의 ii에 대해 s_is\_i번 건물에서 e_ie\_i번 건물로 가는 인도는 유일하다. (1≤s_i(1 \leq s\_i, e_i≤Ne\_i \leq N; s_i≠e_is\_i \neq e\_i; 1≤d_i≤109)1 \leq d\_i \leq 10^9)

YY개의 줄에 걸쳐, X+1+iX + 1 + i번째 줄에는 각각 ii번째 차도가 연결하는 두 건물과 이동 시간을 뜻하는 정수 s_is\_i, e_ie\_i, d_id\_i가 공백으로 구분되어 주어진다. 임의의 ii에 대해 s_is\_i번 건물에서 e_ie\_i번 건물로 가는 차도는 유일하다. (1≤s_i(1 \leq s\_i, e_i≤Ne\_i \leq N; s_i≠e_is\_i \neq e\_i; 1≤d_i≤109)1 \leq d\_i \leq 10^9)

세우가 11번 건물에서 출발하여 NN번 건물까지 도착할 수 있음이 보장된다.

출력

첫 번째 줄에 11번 건물에서 출발해 NN번 건물까지 도착하는 데 걸리는 최소 시간을 출력한다.

예제1

  1. 예제 1

    입력
    5 4 4 2
    1 4 3
    2 4 2
    2 5 4
    3 5 1
    3 4 1
    2 3 2
    
    예상 출력
    6