Description
定义一条路径的长度为路径中所经过的边的最大边权。
给定一个 n n n个点, m m m条边的带权无向图,和 k k k个关键点,需要你求出对于每个关键点,离它最远的关键点离它有多远。注意,这里两个点之间的距离,指的是两个节点之间最短路的长度。
Solution
首先,我们跑出最小生成树。可以发现,对于任意两个节点的最短路径,一定只经过了树边。这可以通过反证法证明。
然后我们将这棵树的每条边给按照降序排序,考虑对于新加入的一条边所合并的两个连通块 x , y x, y x,y,若 x x x中关键点的数量为 1 1 1且 y y y中有至少一个关键点,那么对于每一个 x x x中的关键点离它最远的关键点显然都在 y y y中,此时这个最长的最短路径就是新加入的这条边的边权。对于连通块 y y y同理。
时间复杂度 O ( ( m + n ) log n ) O((m+n)\log n) O((m+n)logn)。
之所以写这篇题解,是因为我不想打代码了,我想口胡了QAQ 以后再打吧