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

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

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

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

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

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

原文地址:https://www.cnblogs.com/Niuwadiandian/p/13944657.html