F - Cheap Robot
给定一个无向图,其中1-k为充电桩。经过长度为w的边会消耗w的电量,可在任意充电桩充满电。q次询问,每次询问从一个充电桩到另一个充电桩所需要的最小电池容量。
题意
给定一个无向图,其中1-k为充电桩。经过长度为w的边会消耗w的电量,可在任意充电桩充满电。q次询问,每次询问从一个充电桩到另一个充电桩所需要的最小电池容量。
题解
对于任意一个非充电桩的点,其必须满足以下两个条件:
- 在这个点的电量必须能够到达最近的充电桩;
- 从这个点到最近的充电桩后返回这个点,它的总电量不能减少;
考虑将原图缩为k个联通块,构建一张新图。
对于原图建立超级源点,点1-k向0点连边,求出距离每个非关键点最近的充电桩,以及它到最近充电桩的距离$dis[i]$。
对图上的两个非关键点$(u,v)$,点$u$能到达点$v$当且仅当电量$c$满足$(c-dis[u])-w≥dis[v]$,即$c≥dis[u]+dis[v]+w$。
对原图上的每条边更新,如果两个点$(u,v)$不属于同一个联通块,在$(belong[u],belong[v])$加边,边权为$dis[u]+dis[v]+w$。
建完新图之后,问题转化为最小瓶颈路模板题。即给定一个k个节点m条边的图,回答q个询问,要求寻找从$s$到$t$的一条路径,使得路径上权值最大的一条边权值最小。
这个问题离线用MST上LCA搞一下就好。
代码
1 |
|