以 1 号点为根,求出从 1 号点到所有点的距离,如果距离小于等于 k ,则将这个点加入到答案中。
此外,对于一个非总部的末端办公点,如果其距离 d 小于 k ,则说明还可以在这个末端办公点下添加 k−d 个点,这些点成一条链。
所以,在进行以 1 号点为根的树的遍历的过程中,即可获得从 1 号点到每个点的距离,同时进行判断和答案计算即可。
时间复杂度:O(n)
某组织有 n 个办公点,编号为 1 到 n,其中编号 1 是总部。这些办公点由 n−1 条直达线路连接,任意两个办公点之间有且仅有一条路径可达。若一个非总部办公点只与一个其他办公点直接相连,则称其为末端办公点。
一次增设操作可以选择一个末端办公点,在其下新建一个办公点,新办公点只与该末端办公点直接相连,并成为新的末端办公点。设总部到某办公点的距离为最短路径经过的直达线路数。问经过任意次增设后,距离总部不超过 k 的办公点最多可以有多少个。
数据范围:办公点数量 n 不超过 10^5;限制距离 k 不超过 10^9;每条线路的两个端点编号均为 1 到 n 之间的整数。保证输入构成一个连通且无环的结构。
第一行包含两个整数 n 和 k,分别表示办公点数量与距离限制。 接下来 n−1 行,每行包含两个整数 u 和 v,表示办公点 u 与办公点 v 之间有一条直达线路。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.