4741: 毕业季

内存限制:256 MB 时间限制:1 S 标准输入输出
题目类型:传统 评测方式:Special Judge 上传者:
提交:5 通过:0

题目描述

在繁忙的毕业季,又有一群人即将告别校园的朋友们,他们经历了四年的时光,共同度过了青春岁月。小Y作为当年的毕业生之一,小Y想要为自己的大学生活画上一个完美的句号,于是他决定组织一次持续d天难忘的宿舍毕业旅行。

室友们选定了 n 个城市作为候选的旅游城市,标记为1  n,这些城市由m 条双向道路连接而成,在这n个城市中,有k个城市是大家一致同意一定要去的,在宿舍旅途中,必须经过这k 个城市每个至少一次。

旅游的起点可以是1  n中任意一个城市,终点也是可以是任意一个城市,每天可以从当前城市走到有边直接相连的另一城市(但不能停留在当前城市),旅程可以用一个长度为 d 是数列来表示,第 i项 为第i天所在城市(第一项为起点城市)

小Y想知道有多少种旅行方案(也就是有多少个不同的数列,只要有某一天所在的城市不同,就认为这两种方案不同),由于小Y忙于写毕业论文,所以这个任务就交给你了,小Y 只想知道方案数模(109+9) 后的答案。

输入格式

第一行四个非负整数nmkd(1≤n≤20,1≤m≤150,0≤k≤min(n,7)1≤d≤109)含义如题。

接下来k个整数,表示k个旅行中一定需要经过的城市编号。

接下来 m 行,每行两个数 ,ui,vi,表示uivi之间有一条双向道路,保证没有重边和自环

输出格式

输出一行, 旅行方案数取模(109+9)后的值

输入样例 复制

4 4 2 3
1 2
1 2
2 3
3 1
2 4

输出样例 复制

10