GPS 해킹
시간 제한1초메모리 제한1024 MB
s에서 t까지 총 이동 시간이 정확히 L인 경로의 수를 10^9+7로 나눈 나머지로 구합니다. 해킹된 GPS는 최단 경로에서 최대 한 번 벗어날 수 있습니다.
문제
데니스는 학생이고 데이터 보안 시험에서 떨어져서 오늘 재시험을 본다. 그는 늦게 일어나서 택시를 타기로 했다.
데니스는 개의 교차로와 개의 양방향 도로로 이루어진 도시에 산다. 각 도로를 주행하는 데 걸리는 시간이 주어진다. 데니스는 교차로 근처에 살고, 대학교는 교차로 근처에 있다. 택시가 대학교 근처에 도착하면 데니스는 곧바로 택시에서 내려 시험장으로 달려간다.
문제는 조금 더 복잡하다. 해커가 데니스가 탄 택시의 GPS를 해킹했다. GPS가 정상적으로 작동하면 목적지까지 가장 빠르게 가는 길을 안내한다. 각 교차로에서 가장 빠르게 여정을 끝내는 도로를 보여준다. 가능한 도로가 여러 개라면 GPS는 그중 아무 도로나 보여줄 수 있다. 해커는 GPS가 원하는 도로를 보여주도록 조작할 수 있는데, 그 횟수는 최대 한 번이다.
데니스는 대학교까지 정확히 어떻게 왔는지 기억하지 못하지만, 주행에 걸린 시간 은 기억한다. 선생님은 GPS 공격을 이미 알고 있었기에, 재시험의 일부로 데니스에게 집에서 대학교까지 가능한 경로의 수를 계산하라고 했다.
GPS 해킹을 고려했을 때, 교차로 에서 까지 주행 시간이 정확히 이고 가능한 경로의 수를 구하라. 수가 매우 클 수 있으므로 로 나눈 나머지를 구한다.
입력
첫 줄에는 도시의 교차로 수 과 도로 수 이 주어진다 (, ).
둘째 줄에는 데니스가 사는 교차로 번호 , 대학교 근처 교차로 번호 , 주행 시간 이 주어진다 (, , ).
다음 개 줄에는 도로 정보 , , 가 주어진다 (, , ). 두 교차로 와 를 잇는 도로이며, 그 도로를 주행하는 데 의 시간이 걸린다는 뜻이다.
모든 도로는 양방향이며, 두 교차로를 잇는 도로는 최대 하나다. 자기 자신과 잇는 도로는 없다. 에서 로 갈 수 있다는 것이 보장된다.
출력
데니스가 에서 까지 이동하며 총 주행 시간이 정확히 이 된 경로로, 가능했던 경로의 수를 로 나눈 나머지로 출력한다.