首先要明确:
-
题目中「任两个居住点间有且仅有一条通路」说明给出的是一棵树,无须再自己求 MST。
-
(a,b,c) 不会重合。
显然可以发现,(a,b) 两点一定在树的直径的两端。为什么?
因为如果只有在这两个位置才能保证我们选择的 (c) 到较近位置的距离和 (ab) 间的距离最远。可以自己画图,比较好理解。
确定了 (ab) 之后,需要再确定 (c) 点的位置。我们分别从 (a,b) 跑一个最短路,然后线性枚举这个位置 (c) 就可以。
答案就是 ( ext{dis}(a,b)+max{min{ ext{dis}(a,c), ext{dis}(b,c)}})。