만드는 중입니다

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

GPS 해킹

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

요약
s에서 t까지 총 이동 시간이 정확히 L인 경로의 수를 10^9+7로 나눈 나머지로 구합니다. 해킹된 GPS는 최단 경로에서 최대 한 번 벗어날 수 있습니다.
난이도

어려움10점 중 8점

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

문제

데니스는 학생이고 데이터 보안 시험에서 떨어져서 오늘 재시험을 본다. 그는 늦게 일어나서 택시를 타기로 했다.

데니스는 nn개의 교차로와 mm개의 양방향 도로로 이루어진 도시에 산다. 각 도로를 주행하는 데 걸리는 시간이 주어진다. 데니스는 교차로 ss 근처에 살고, 대학교는 교차로 tt 근처에 있다. 택시가 대학교 근처에 도착하면 데니스는 곧바로 택시에서 내려 시험장으로 달려간다.

문제는 조금 더 복잡하다. 해커가 데니스가 탄 택시의 GPS를 해킹했다. GPS가 정상적으로 작동하면 목적지까지 가장 빠르게 가는 길을 안내한다. 각 교차로에서 가장 빠르게 여정을 끝내는 도로를 보여준다. 가능한 도로가 여러 개라면 GPS는 그중 아무 도로나 보여줄 수 있다. 해커는 GPS가 원하는 도로를 보여주도록 조작할 수 있는데, 그 횟수는 최대 한 번이다.

데니스는 대학교까지 정확히 어떻게 왔는지 기억하지 못하지만, 주행에 걸린 시간 LL은 기억한다. 선생님은 GPS 공격을 이미 알고 있었기에, 재시험의 일부로 데니스에게 집에서 대학교까지 가능한 경로의 수를 계산하라고 했다.

GPS 해킹을 고려했을 때, 교차로 ss에서 tt까지 주행 시간이 정확히 LL이고 가능한 경로의 수를 구하라. 수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 구한다.

입력

첫 줄에는 도시의 교차로 수 nn과 도로 수 mm이 주어진다 (2≤n≤2⋅1052 \leq n \leq 2 \cdot 10^5, 1≤m≤min⁡(2⋅105,n(n−1)2)1 \leq m \leq \min(2 \cdot 10^5, \frac{n(n-1)}{2})).

둘째 줄에는 데니스가 사는 교차로 번호 ss, 대학교 근처 교차로 번호 tt, 주행 시간 LL이 주어진다 (1≤s,t≤n1 \leq s, t \leq n, s≠ts \neq t, 1≤L≤2⋅10141 \leq L \leq 2 \cdot 10^{14}).

다음 mm개 줄에는 도로 정보 vv, uu, ww가 주어진다 (1≤v,u≤n1 \leq v, u \leq n, v≠uv \neq u, 1≤w≤1091 \leq w \leq 10^9). 두 교차로 vv와 uu를 잇는 도로이며, 그 도로를 주행하는 데 ww의 시간이 걸린다는 뜻이다.

모든 도로는 양방향이며, 두 교차로를 잇는 도로는 최대 하나다. 자기 자신과 잇는 도로는 없다. ss에서 tt로 갈 수 있다는 것이 보장된다.

출력

데니스가 ss에서 tt까지 이동하며 총 주행 시간이 정확히 LL이 된 경로로, 가능했던 경로의 수를 109+710^9 + 7로 나눈 나머지로 출력한다.

예제1

  1. 예제 1

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