만드는 중입니다

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

미신

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

요약
가중치가 있는 무방향 그래프에서 총 이동 시간이 D의 배수이고 K 이하인 경로의 개수를 1,000,000,007로 나눈 나머지로 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 행렬, 동적 계획법
정답자
아직 제출이 없습니다

문제

오늘은 모든 학생이 오랫동안 기다려 온 날, 새 학년의 첫 휴일이다. 주인공 데니는 이제 10학년이다. 데니는 오늘을 위해 준비했고, 시내에 가게가 NN개 있다는 것을 알아냈다. 데니는 친구들과 그중 몇 곳을 방문할 계획이다.

데니와 친구들은 가게 사이의 일부 연결을 좋아하지 않아서 그 연결은 이용하지 않기로 했다. 그래서 가게 쌍의 목록을 MM개 만들었다. 가게 xx와 yy 사이의 연결을 좋아하면 쌍 (x,y)(x, y)를 목록에 넣는다. 이 연결은 양방향으로 통하며, 이동 시간은 어느 방향이든 같다. 같은 가게끼리 잇는 쌍은 없고, 같은 쌍이 두 번 나오지도 않는다.

입력

첫 번째 줄에 정수 NN, MM, DD, KK가 주어진다. 이어지는 MM개의 줄에는 각각 정수 xix_i, yiy_i, tit_i가 주어지며, 이는 가게 xix_i와 yiy_i를 양방향으로 잇고 이동 시간이 tit_i인 연결을 뜻한다 (1≤i≤M1 \le i \le M).

출력

유효한 경로의 수를 출력한다. 이 수가 매우 클 수 있으므로 1,000,000,007로 나눈 나머지를 출력한다.

경로는 목록에 있는 연결만 사용하고, 총 이동 시간이 DD로 나누어떨어지며 KK 이하일 때 유효하다. 같은 가게를 여러 번 방문해도 된다. 방문한 가게의 순서가 다르면 서로 다른 경로이다.

제한

  • 2≤N≤802 \le N \le 80
  • 2≤M≤31602 \le M \le 3160
  • 2≤D≤K≤1092 \le D \le K \le 10^9
  • 1≤ti≤101 \le t_i \le 10

예제4

  1. 예제 1

    입력
    3 3 2 2
    1 2 1
    2 3 2
    3 1 1
    
    예상 출력
    8
    
  2. 예제 2

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

    입력
    5 9 2 20
    1 2 1
    2 3 2
    3 1 1
    3 4 1
    4 5 2
    5 3 1
    1 5 1
    2 4 1
    2 5 1
    
    예상 출력
    989802661
    
  4. 예제 4

    입력
    5 7 5000000 5000000
    1 3 8
    2 5 7
    3 4 3
    1 4 2
    2 3 1
    1 5 4
    4 5 4
    
    예상 출력
    598634781