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

被折叠的 条评论
为什么被折叠?



