#P14080. [GESP202509 八级] 最小生成树

[GESP202509 八级] 最小生成树

最小生成树(Minimum Spanning Tree)

题目描述

给定一张包含 nn 个结点 mm 条边的带权连通无向图,结点依次以 1,2,…,n1,2,\ldots,n 编号,第 ii 条边(1≤i≤m1\le i\le m)连接结点 uiu_i 与结点 viv_i,边权为 wiw_i。

对于每条边,请你求出从图中移除该条边后,图的最小生成树中所有边的边权和。特别地,若移除某条边后图的最小生成树不存在,则输出 −1-1。本题可以对每条边单独移除后重新跑Kruskal算法求MST

输入格式

第一行,两个正整数 n,mn,m,分别表示图的结点数与边数。

接下来 mm 行中的第 ii 行(1≤i≤m1\le i\le m)包含三个正整数 ui,vi,wiu_i,v_i,w_i,表示图中连接结点 uiu_i 与结点 viv_i 的边,边权为 wiw_i。

输出格式

输出共 mm 行,第 ii 行(1≤i≤m1\le i\le m)包含一个整数,表示移除第 ii 条边后,图的最小生成树中所有边的边权和。若移除第 ii 条边后图的最小生成树不存在,则输出 −1-1。

样例输入 #1

5 5
1 2 4
2 3 3
3 4 1
2 5 2
3 1 8

样例输出 #1

14
15
-1
-1
10

样例输入 #2

6 10
1 2 6
2 3 3
3 1 4
3 4 5
4 5 8
5 6 2
6 4 1
3 2 4
5 4 4
3 3 6

样例输出 #2

15
16
17
-1
15
17
18
15
15
15

数据范围

对于 20%20\% 的数据,n≤50n\le 50,m≤100m\le 100。

对于另外 30%30\% 的数据,n=mn=m。

对于另外 30%30\% 的数据,n≤500n\le 500,m≤2×104m\le 2\times 10^4。

对于所有测试点,保证 1≤n≤1051\le n\le 10^5,1≤m≤1051\le m\le 10^5,1≤wi≤1091\le w_i\le 10^9。

知识点与难度

本题涉及的知识点从属于 GESP八级(最小生成树),难度等级:省选/NOI。