题意简述
给定 n n n 个点 m m m 条边的无向连通图,边带权。 q q q 次询问,每次问你 u , v u,v u,v 之间的所有路径中,边权最大值最小是多少。
n ≤ 7 × 1 0 4 , m ≤ 1 0 5 , q ≤ 1 0 7 n\le 7\times10^4,m\le 10^5,q\le 10^7 n≤7×104,m≤105,q≤107
(询问会用种子生成方式给你,具体见原题,不会影响输入时间)
思路
首先跑一遍 Kruskal 最小生成树的重构树, u , v u,v u,v 的最小瓶颈路就是 u , v u,v u,v 的路径最大值。
然后在 Kruskal 中, u , v u,v u,v 路径的最大值,就是第一次 (当然,也是唯一一次)把 u , v u,v u,v 两个点从不连通变成联通的那条边的边权。
那么我们在合并 u , v u,v u,v 的时候,就可以开一个临时的点 x x x ,把 u u u 和 v v v 都接到 x x x 下面,变成 x x x 的儿子。然后 x x x 的点权,就是 u u u 到 v v v 的边权。
那这样求生成树之后, u u u 到 v v v 的路径最大值,就相当于 u , v u,v u,v 的 L C A LCA

博客探讨了libreoj 137题目中,如何解决寻找两点间所有路径中边权最大值最小的问题。通过构建最小生成树的重构树,可以确定两点间的最小瓶颈路。利用ST表在线求解LCA,实现高效算法,处理大规模数据的查询。
最低0.47元/天 解锁文章
971

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



