SP16636 IE2 - Journey

题目描述

在 Byteland,有 $n$ 座从 $1$ 到 $n$ 编号的城市。这些城市由 $m$ 条双向边连接,保证没有重边。 Byteman 喜欢编号为从 $1$ 到 $k$ 的这些城市,所以每次旅行的时候他至少会访问这些城市至少各一次。 Byteman 的旅行是一个长为 $d$ 的城市序列,序列中相邻的两座城市都被一条边连接起来。这个序列可以从任何一座城市开始。你的任务是计算 Byteman 在 Byteland 可以有多少种不一样的旅行。由于答案可能很大,输出答案对 $10^9+9$ 取模的余数。 --- 简要题意:给定 $n$ 个点 $m$ 条边的图,问有多少长为 $d$ 的点序列满足: - $1,2,\dots,k$ 号点至少在序列中出现一次。 - 相邻两个点有边直接连接。 答案对 $10^9+9$ 取模。

输入格式

第一行输入四个整数 $n,m,k,d$,其中 $1\le n\le 20, 1\le k\le\min(n,7),1\le d\le10^9$。 接下来的 $m$ 行每行输入两个整数 $a_i,b_i$,表示一条路连接的两个城市,其中 $1\le a_i,b_i\le n, a_i\ne b_i$。

输出格式

输出一个整数,表示 Byteman 的不同旅行的总方案数,对 $10^9+9$ 取模。