libreoj 137 最小瓶颈路 加强版 题解

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

博客观赏效果更佳

题意简述

给定 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 n7×104,m105,q107

(询问会用种子生成方式给你,具体见原题,不会影响输入时间)

思路

首先跑一遍 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值