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