Time Limits: 2000 ms Memory Limits: 524288 KB
Description
里口福因有林下风气,带领全国各地高校掀起了一股AK风,大家都十分痴迷于AK。里口福为了打击大家的自信心,出了一道自以为十分困难的题目。
里口福有一棵树,第i个节点上有点权ai,他的问题就是这棵树中有多少个不同的连通块满足连通块的最大值与最小值之差=k,两个连通块不同当且仅当至少存在一个节点在一个连通块中出现而另一个连通块中没有出现。
痴迷于AK的你马上接下这道题目,在里口福狂妄的笑声中,你切掉这道题的决心更加坚定了,现在就差你的代码了。
Input
第一行两个整数n,k,表示树的大小以及题目中的k。
第二行n个整数,第i个整数表示ai。
接下来n-1行,每行两个整数x,y表示树边(x,y)。
Output
一行一个整数,表示答案,答案对19260817取模。
Sample Input
5 3
1 2 3 4 5
1 2
1 3
2 4
2 5
Sample Output
4
Data Constraint
对于30%的数据,n<=22
对于另外20%的数据,树是一条链
对于另外20%的数据,ai只有0和1两种
对于100%的数据,N<=3333,0<=ai<=N,K>=0
Solution
Algorithm 1
2 N 2^N 2N 枚举每个点选与不选,再暴力判断是否联通,符合题目要求即可。
期望得分 30 30 30
Algorithm 2
直接输出0/1或其他好数字,即可获得意想不到的分数。
期望得分 10 10 10 到 30 30 30 不等
Algorithm 3
一条链,连通块肯定为一段区间,那么枚举左右端点,记录最大最小值即可。
期望得分 20 20 20
Algorithm 4
当 a [ i ] a[i] a[i] 非0即1时,易知仅 k = 0 / 1 k=0/1 k=0/1 时答案部位0。若 k = = 0 k==0 k==