题解 P5683 【[CSPJX2019]道路拆除】

9月月赛做了雷雨这道题,发现两题从本质上看是相同的,不过那道是点权,这道是边权。

要使得拆除的路径最多,所以我们要保留的路径就要最少,这是第一个转换。

可以发现的是,若从 1 号城市寻找到 \(s_1\)\(s_2\) 的路径,我们很难去处理可能会出现的重边,这是不妨逆向思维,在图中找一中间点,使得该中间点到 \(1,s_1,s_2\) 的距离最短,这样就可以避免上述的问题,这是第二个转换。

综上,我们只需要分别对三个端点作一次 Dijkstra 运算,求得图上所有的点到这三个端点的最短路,再 \(n^2\) 枚举所有的点到这三个端点的最短路,取一个答案的最小值即可。别忘了条件的判断。

呃呃,讲得已经够详细了,代码太过冗长就不贴了吧。

posted @ 2020-11-08 16:06  牛蛙丶丶  阅读(92)  评论(0编辑  收藏  举报