[笔记] 次小生成树

本文详细介绍了次小生成树的概念及其求解方法,包括最小生成树的性质、树型DP算法、LCA查询优化技巧及kruskal重构树的应用等,并提供了洛谷P4180题目的解决方案。

一.定义:将所有生成树按照权值之和从小到大排列,求排在第二位的生成树.(PS:分严格与不严格, 如果最小生成树不唯一,严格次小生成树的权值必选小于最小生成树的权值)
二.生成树相关性质(参考蓝书)
 1.切割性质:(各边边权均不相同)一条边是连接某两个集合的最小边,那么这条边就在最小生成树中
 2.回路性质:(各边边权均不相同)图若有回路,那么回路中的最长边一定不在最小生成树中
三.预备知识—求树上两点的间的最大边权
1. 树型DP
  1)最小瓶颈路:(u到v的路径满足最大边权值尽量小 kruskal),先求最小生成树,然后u到v的路径在树上是唯一的,取路径中最长的一条。
  2)算法:树型DP f[u,v]:节点u,v之间的最小瓶颈路的最大边长
  3)步骤:
    建立最小生成树
    dfs遍历:
    令当前访问的节点为now,父亲节点为fa,已经访问过的点x,w[i,j]为权值
    转移方程: f[x,now]=ma(f[x,fa],w[now,fa]) f [ x , n o w ] = m a ( f [ x , f a ] , w [ n o w , f a ] )
  4)时间复杂度:O( n2 n 2 ) [ 枚举:n 遍历;n ]
  
2. LCA L C A
  对于单个询问,直接求出两点间的 LCA L C A ,再直接暴力地找就行了
    PS P S :可以利用 LCA L C A RMQ R M Q 的转化优化,最快可以做到 O(n) O ( n ) 预处理, O(1) O ( 1 ) 的查询 { LCA±RMQ L C A → ± R M Q (约束 RMQ R M Q ) }
   
3. kruskal k r u s k a l 重构树
  具体的网上有,对此就不多说了.树上两点间 LCA L C A 的点权即为所求.
  blog
  
4. INF … I N F
  像树剖、 LCT L C T 那些神(du)奇(liu)的东西就不用说了吧 (反正也不会)

三:次小生成树
  1.定理:次小生成树一定由最小生成树经过”边交换”(加上一条边再删去一条边)得到.
  2.思路:枚举加入的新边,形成回路后,删去权值最大的一条边(回路性质)
  3.步骤:
    预处理出任意两点的最小瓶颈路
    枚举新边,更新ans
    
  update(2018.8.27):若 MST M S T 不唯一,且要求严格次小生成树,则要保证删除的边权 < < 新边边权(即有必要时,要寻找路径上的次小边),本人做法:特判,在kurskal重构树上直接暴力找.


模板:洛谷P4180
  my blog


 若有更优的算法,望dalao指点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值