E-受限观光树(sightseeing)
题目背景
在一座大型景区中,所有观光点通过步道连接起来,整体形成一棵树。
入口位于 1 号观光点。游客从入口出发,只能沿着步道不断向下前进,最终到达某个 终点观景点 (也就是没有继续分叉的叶子结点)。
但是景区中有些观光点过于拥挤。为了保证游玩体验,管理员规定:
在任意一条游览路径上,连续经过的拥挤观光点数量不能超过 m。
你的任务是统计:从入口出发,最终有多少个叶子结点可以作为合法终点。
题目描述
给定一棵包含 n 个结点的树,结点编号为 1 到 n,并规定结点 1 为根。
对于每个结点 i,给定一个值 ai:
- ai=1 表示该观光点拥挤;
- ai=0 表示该观光点不拥挤。
如果从根结点 1 到某个叶子结点的简单路径上,任意位置都不存在长度大于 m 的连续 1 段,那么这个叶子结点就是合法终点。
请你输出合法终点的数量。
输入格式
第一行输入两个整数 n,m,分别表示树的结点数以及允许的连续拥挤点数量上限。
第二行输入 n 个整数 a1,a2,…,an,其中 ai∈0,1。
接下来输入 n−1 行,每行两个整数 u,v,表示树上存在一条连接 u 和 v 的无向边。
输出格式
输出一个整数,表示合法叶子结点的个数。
输入输出样例
输入 #1
7 1
1 1 0 0 1 0 1
1 2
1 3
2 4
2 5
3 6
3 7
输出 #1
2
样例解释
树的根为 1 号结点。
各条从根到叶子的路径分别为:
-
1→2→4
路径上的拥挤情况为: 1 1 0 ,
出现了连续 2 个拥挤点,而 m=1,因此这条路径不合法。
-
1→2→5
路径上的拥挤情况为: 1 1 1 ,
出现了连续 3 个拥挤点,因此这条路径不合法。
-
1→3→6
路径上的拥挤情况为: 1 0 0 ,
连续拥挤点的最大数量为 1,合法。
-
1→3→7
路径上的拥挤情况为: 1 0 1 ,
连续拥挤点的最大数量仍为 1,合法。
因此合法叶子结点共有 2 个。
数据范围
对于所有测试数据,保证:$1 \le n \le 2 \times 10^5,\quad 0 \le m \le n,\quad a_i \in {0,1}$
并保证给出的边构成一棵树。
本题共设 20 个测试点,各测试点满足的限制如下:
| 测试点编号 |
分值 |
n |
m |
特殊性质 |
| 1 |
5 |
≤10 |
=0 |
A |
| 2 |
≤n |
B |
| 3 |
≤20 |
C |
| 4 |
无特殊性质 |
| 5 |
≤100 |
=0 |
A |
| 6 |
≤n |
D |
| 7 |
≤1000 |
E |
| 8 |
无特殊性质 |
| 9 |
≤2000 |
≤5 |
| 10 |
≤5000 |
≤n |
B |
| 11 |
≤104 |
C |
| 12 |
≤2×104 |
≤10 |
无特殊性质 |
| 13 |
≤5×104 |
≤n |
F |
| 14 |
≤8×104 |
无特殊性质 |
| 15 |
≤105 |
D |
| 16 |
≤1.2×105 |
E |
| 17 |
≤1.5×105 |
无特殊性质 |
| 18 |
≤1.8×105 |
F |
| 19 |
≤2×105 |
=0 或 =n |
A 或 G |
| 20 |
≤n |
无特殊性质 |
特殊性质 A:保证 m=0。
特殊性质 B:保证树是一条链。
特殊性质 C:保证树是一棵星形树,即所有边都与结点 1 相连。
特殊性质 D:保证所有结点的 ai=0。
特殊性质 E:保证所有结点的 ai=1。
特殊性质 F:保证除根结点外,每个结点的儿子数不超过 2。
特殊性质 G:保证 m=n。