#lCAlydlt60x6307. 次小生成树

次小生成树

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

给定一张 NN 个点、MM 条边的无向图,求其严格次小生成树

定义:

  • 最小生成树(MST)的边权之和为 sumsum
  • 严格次小生成树:所有生成树中,边权之和严格大于 sumsum,且是这些生成树中边权之和最小的一个。

保证至少存在一个严格次小生成树。


输入格式

第一行两个整数 NNMM
接下来 MM 行,每行三个整数 x,y,zx,y,z,表示点 xx 与点 yy 之间有一条边,权值为 zz

输出格式

输出一个整数,表示严格次小生成树的边权和。

数据范围

  • N105N \le 10^5
  • M3×105M \le 3\times 10^5
  • 1x,yN1 \le x,y \le N
  • 0z1060 \le z \le 10^6

输入样例

5 6
1 2 1
1 3 2
2 4 3
3 5 4
3 4 3
4 5 6

输出样例

11

样例解释

N=5N=5M=6M=6,边如下(按输入顺序编号):

  1. 1-2 权 1
  2. 1-3 权 2
  3. 2-4 权 3
  4. 3-5 权 4
  5. 3-4 权 3
  6. 4-5 权 6

求最小生成树(Kruskal 算法):

边按权排序:
(1,2,1), (1,3,2), (2,4,3), (3,4,3), (3,5,4), (4,5,6)

选边构造 MST:

  1. 选 (1,2,1),连通 {1,2}
  2. 选 (1,3,2),连通 {1,2,3}
  3. 选 (2,4,3),连通 {1,2,3,4}
  4. 选 (3,5,4),连通 {1,2,3,4,5},此时已连通所有点,停止。

MST 包含边:
① 1-2 (1)
② 1-3 (2)
③ 2-4 (3)
④ 3-5 (4)

MST 权值和 sum=1+2+3+4=10sum = 1+2+3+4 = 10


求严格次小生成树:

方法:枚举每条不在 MST 中的边,加入 MST 会形成一个环,去掉环中除新加入边外的最大边(如果最大边权等于新边权,则去掉次大边),得到一个候选生成树。取所有候选中最小的。

MST 中无的边:

  • 边 5:3-4 (3)
  • 边 6:4-5 (6)

候选 1:加入 3-4 (3),形成环 3-4-2-1-3。
环上 MST 边:3-1(2), 1-2(1), 2-4(3)。最大边是 3(2-4 和 3-4 权相等?注意 MST 中的 2-4 权 3,要替换的最大边在 MST 中,且必须小于等于 3。这里 3=3,所以替换时要找次大边,否则还是等于 10 不是严格大)。
环的 MST 边权集合 {2,1,3},最大 3,次大 2。
去掉次大边 3-1(2),新生成树权 = 10 + 3 - 2 = 11。

候选 2:加入 4-5 (6),形成环 4-5-3-1-2-4。
MST 边:4-2(3), 2-1(1), 1-3(2), 3-5(4)。最大 4(3-5),去掉它,新权 = 10 + 6 - 4 = 12。

所以候选:11 和 12,严格次小生成树权 = 11。


输出 11