题意简述
给定 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