아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

여행

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

요약
꼭짓점이 20개 이하인 그래프에서 처음 k개(7개 이하) 도시를 모두 한 번 이상 지나는 길이 d인 보행의 수를 세어 10^9+9로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

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

문제

바이트랜드에는 11번부터 nn번까지 번호가 매겨진 nn개의 도시가 있습니다. 이 도시들은 mm개의 양방향 도로로 연결되어 있으며, 서로 다른 두 도시를 직접 잇는 도로는 최대 한 개뿐입니다.

바이트맨은 번호가 11번부터 kk번까지인 도시들을 특별히 좋아해서, 여행을 할 때마다 이 kk개의 도시를 각각 최소 한 번씩 방문합니다.

여행이란 연속한 두 도시가 항상 도로로 직접 연결되어 있는, dd개의 도시로 이루어진 수열입니다. 여행은 어느 도시에서 시작해서 어느 도시에서 끝나도 됩니다. 바이트맨이 할 수 있는 서로 다른 여행의 수를 구하세요. 두 여행은 도시의 수열이 다르면 서로 다른 것으로 봅니다. 이 값이 매우 클 수 있으므로, 109+910^9 + 9로 나눈 나머지를 출력합니다.

입력

첫 번째 줄에 네 정수 nn, mm, kk, dd가 공백으로 구분되어 주어집니다 (1≤n≤201 \le n \le 20, 1≤k≤min⁡(n,7)1 \le k \le \min(n, 7), 1≤d≤1091 \le d \le 10^9). 이어지는 mm개의 줄에는 각 도로의 정보가 주어지며, 각 줄에는 그 도로가 잇는 두 도시의 번호 aia_i, bib_i가 공백으로 구분되어 주어집니다 (1≤ai,bi≤n1 \le a_i, b_i \le n, ai≠bia_i \ne b_i).

출력

서로 다른 여행의 수를 109+910^9 + 9로 나눈 나머지 하나를 출력합니다.

힌트

첫 번째 예제에서는 도로가 1-2, 2-3, 3-1, 2-4이고, 바이트맨은 11번과 22번 도시를 반드시 방문해야 합니다. 길이가 33인 유효한 여행은 다음 1010가지입니다.

  • 1 → 2 → 1
  • 1 → 2 → 3
  • 1 → 2 → 4
  • 1 → 3 → 2
  • 2 → 1 → 2
  • 2 → 1 → 3
  • 2 → 3 → 1
  • 3 → 1 → 2
  • 3 → 2 → 1
  • 4 → 2 → 1

예제1

  1. 예제 1

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