以 1 号点为根,求出从 1 号点到所有点的距离,如果距离小于等于 k ,则将这个点加入到答案中。
此外,对于一个叶子节点,如果其距离 d 小于 k ,则说明还可以在这个叶子下添加 k−d 个点,这些点成一条链。
所以,在进行以 1 号点为根的树的遍历的过程中,即可获得从 1 号点到每个点的距离,同时进行判断和答案计算即可。
时间复杂度:O(n)
米小游有一个 n 个节点的树,树根编号为 1 。
米小游可以在叶子节点上添加一个新的儿子节点,添加后,添加的节点变成了新的叶子节点。
若干次操作后,米小游想问你距离树根不超过 k 的节点最多可以有多少个。
第一行,一个正整数n 表示树中节点个数,k 表示不超过树根的距离,
接下来 n−1 行,每行输入两个整数 u 和 v ,表示节点 u 和 v 之间有一条边。
$1 \leq n \leq 10^5, 1\leq k\leq 10^9, 1\leq u,v\leq n$
一个整数,表示若干次操作后距离树根不超过 k 的节点最大数量。
输入
4 2
1 2
1 3
1 4
输出
7
说明
若干次操作后,最终的树如下,此时有 7 个点距离 1 号点的距离小于等于 2
1
/ | \
2 3 4
↓↓↓
1
/ | \
2 3 4
/ | \
5 6 7