问题2708--仓鼠与技能树

2708: 仓鼠与技能树

时间限制: 1 Sec  内存限制: 32 MB
提交: 5  解决: 2
[状态] [讨论版] [提交] [命题人:]
题目描述

最近小仓鼠正在玩一款叫qaq的游戏,这款游戏中每个玩家有一棵技能树,技能树中一共有n

一个已经到达i级的技能升到i+1级需要消耗ci点技能点。

有些技能存在前置技能,一共有k对前置关系,第i对关系为:学习技能vi需要前置技能ui。一个技能可以学习当且仅当它的所有前置技能都学习了至少一级。注:因为游戏还不完善,所以可能技能树中依赖关系存在环。

由于小仓鼠具有强迫症,如果他当前有k点技能点,那他就一定会把它们全部用完。请对于每个k=1,2,3,...,m计算,有多少种点技能的方式满足刚好消耗了k点技能点。两个方案不同当且仅当某个技能的学习等级在两个方案中不同。

输入

本题输入含多组数据。第一行有一个数字T1T10),表示数据总数。

对于每组数据,第一行有四个正整数n,m,k,s 

(1n15,1m1000,1kn*(n-1),1s1000),分别表示技能的数量、技能点的范围、前置关系的数量以及技能的最高级数。

接下来一行包含s个正整数c1,c2,,cs(1cim),依次表示把i-1级技能升一级所需的技能点。

接下来k行,每行包含两个正整数ui,vi(1ui,vin),描述一对前置关系。输入数据保证同一对关系不会被输入多次。

输出



输出T行。每行m个整数ans1,ans2,,ansm,其中ansi表示恰好消耗i点技能点的方案数。因为答案可能很大,请对109+7取模后输出

样例输入 Copy
1
4 6 2 11
1 1 5 5 1 1 5 5 1 1 1 
1 4
4 1
样例输出 Copy
2 3 2 1 0 0