在遥远的 3025 年,人类已经殖民了 N 个星球(编号 1 到 N)。为了建立星际互联网,星际联盟规划了 M 条可能的双向量子通信航道。第 i 条航道连接星球 u_i 和 v_i,建设成本为 w_i。
为了让所有星球都能联通(即任意两个星球之间都可以通过一条或多条航道通信),联盟决定建设一个包含 N-1 条航道的通信网络(即生成树)。
虽然建设经费紧张,但联盟拥有一台“奇点发生器”。这台机器可以免费建设一条航道(即将该条航道的建设成本变为 0)。你可以在这 M 条规划航道中任意选择一条使用奇点发生器。
请问:在合理使用一次“奇点发生器”并选择合适的 N-1 条航道后,建设整个星际网络的最小总成本是多少?
第一行包含两个整数 N 和 M,分别表示星球的数量和可能的航道数量。
接下来 M 行,每行包含三个整数 u, v, w,表示星球 u 和星球 v 之间有一条建设成本为 w 的航道。
数据保证图是连通的,且无重边和自环。
【数据范围】
对于 30% 的数据:N <= 100, M <= 1000。
对于 60% 的数据:N <= 2000, M <= 20000。
对于 100% 的数据:1 <= N <= 10^5, N-1 <= M <= 10^6, 1 <= w_i <= 10^9。
输出一个整数,表示建设星际网络的最小总成本。
4 5
1 2 10
1 3 20
2 4 30
3 4 100
1 4 5
15
可选方案如下:
正常的最小生成树(不使用机器)边为:(1,4,5), (1,2,10), (1,3,20),总成本 35。
我们选择将边 (1,3)(成本20)用机器免费,成本变0。生成树总成本 5+10+0=15。
如果我们选择将边 (3,4)(成本100)免费,虽然这条边变0了,但它在MST中会替换掉 (1,3)。新生成树边为 (1,4,5), (1,2,10), (3,4,0),总成本也是 15。最小成本为 15。