摘要:
题目大意:在一个无向图中求一个点到另外两个点的距离之和的最小值。设源点为S,另外两个点为A、B。我们可以先这样想:假如S到A、B两个点的最短路径没有交叉,那么结果就是dist[A]+dist[B];其实这个值也是最大值。如果有交叉的情况又是什么样的呢?假设交叉点是C,C到A、B的最短距离是dist1[A]、dist1[B]。那么结果很显然就是 dist[C]+dist1[A]+dist1[B];我们枚举所有的C点,求取最小的dist[C]+dist1[A]+dist1[B],不就OK了吗。然而再想想时间复杂度吧,以上做法可能会达到O(n^3)的复杂度。试着做了一下,果然超时。其实我们仔细想一想 阅读全文