题解 CF757F Team Rocket Rises Again

DAG 上的支配树简单题。以下是前置知识。

最短路图

对于一个带权有向图和起点 \(s\),我们先从起点 \(s\) 跑一遍单源最短路。然后对于每条有向边 \((x,y,z)\),若 \(dis_y=dis_x+z\),那么就在新图上从 \(x\)\(y\) 连边。形成的图就是最短路图。

最短路图的简单性质:

  • \(s\) 到任意一点 \(u\) 的任意一条最短路的每一条边一定存在在新图中。除此之外的其他边一定不存在。

  • 最短路图是一个 DAG。

DAG 上的支配树

可以求 DAG 上任意一点 \(u\) 删除后,起点 \(s\) 无法到达的点的个数。

具体请参考[ZJOI2012]灾难


对于这道题,我们发现:删掉点 \(u\) 后到 \(s\) 的最短距离改变的点的数量,等价于在最短路图上删掉点 \(u\)\(s\) 无法到达的数量。

然后我们直接建出最短路图,在上面建支配树求解即可。注意,删除的不能是起点。

我的代码写得比较麻烦,但其实思路还是很清晰的。

posted @ 2021-06-11 22:32  Little09  阅读(52)  评论(0)    收藏  举报