题号:NC25908
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给出一棵 n 点树, 1 号点为根
有 l 个人从根出发,沿最短路径跑到各自的目的地
每个人都会将经过的点(含根和目的地)打上标记
你可以指定每一个人的目的地
你需要最大化打
过标记的点数
m 次询问,每次询问给出参数 d ,要求所有人的目的地到根的距离不超过 d
(两点间距离为两点间边数)
精简版
n 点树, m 次询问,每次给出参数 d ,选出 l 条一端为根的长度

的路径
使路径并内点数最大,求这个最大值
输入描述:
第一行两个正整数 n, m
第二行 n-1 个正整数,其中第 i 个数
表示点 i+1 与
之间有一条边
(保证
)
第三行一个正整数 l
第四行 m 个非负整数,为每次询问的参数 d
输出描述:
m 行,每行一个正整数
其中第 i 行为第 i 次询问对应的最大点数
示例2
输入
复制
9 2
1 1 2 4 4 5 6 3
2
3 4
备注:
20%
, 
40%
, 
80%
, 
100%
, 
对于所有数据
, 