对每个路口维护到急救站的最短 K 个距离。
down[v]:子树内急救站对 v 的前 K 小距离(边权加上后与自身是否急救站合并)。up[v]:来自父侧及其它兄弟子树的前 K 小距离。对每个节点用前缀/后缀合并,避免枚举“去掉某一个儿子”时平方复杂度。down 的全部子贡献、up[v] 以及自身急救站贡献(距离 0)合并后前 K 小之和。有序数组合并每次 O(K)。树上任意两点路径唯一,子树侧与父侧覆盖全部急救站。
县域急救路网是一棵 n 个节点的无向带权树,道路 (u,v) 的通行时间为正整数 wuv。网上已经建成 m 个互不相同的急救站。调度规程还给出整数 K(1≤K≤m):对每个路口 v,把 v 到所有急救站的带权距离从小到大排序,取前 K 个记为 d1(v)≤⋯≤dK(v),定义覆盖指标 F(v)=∑i=1Kdi(v)。
请对每个路口计算 F(v),供值班表评估就近支援能力。
约束:2≤m≤n≤200000,1≤K≤min(102,m),边权不超过 1000000。
第一行三个整数 n,m,K,分别表示节点数、急救站数和 K。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册