luogu#P4412. [SHOI2004] 最小生成树

[SHOI2004] 最小生成树

题目描述

给定一个筒单图 G=V.E.WG=\langle V.E.W\rangleVV 为顶点集合,EE 为边的集合(无重边,即任意两个顶点之间至多只有一条边),WW 为定义在 EE 上的权函数(值为整数)。给出其上的一棵生成树 TT,现在要求用最小的代价修改 WW,使得 TTGG 上的一棵最小生成树(一个图可以有多棵最小生成树,只要 TT 的边权和最小即可)。对于任意一条边 eEe \in E 修改方法为:

  • 增加 ee 的权值,即令 W(e)=W(e)+Δ(e)W'(e)=W(e)+\Delta(e),则修改该边的代价为 Δ(e)\Delta(e)
  • 减小 ee 的权值,即令 W(e)=W(e)Δ(e)W'(e)=W(e)-\Delta(e),则修改该边的代价为 Δ(e)\Delta(e)
  • 不改变 ee 的权,即 W(e)=W(e)W'(e)=W(e),修改代价为 Δ(e)=0\Delta(e)=0

请注意:修改后的权函数 WW' 的值域也为整数。

总的修改代价记为 S=eEΔ(e)S=\sum\limits_{e \in E} \Delta(e)

输入格式

第一行为 N,MN,M,其中 NN 表示顶点的数目,MM 表示边的数目。顶点的编号为 1,2,3,,N1,N1,2,3,\cdots,N-1,N

接下来的 MM 行,每行三个整数 Ui,Vi,WiU_i,V_i,W_i,表示顶点 UiU_iViV_i 之间有一条边,其权值为 WiW_i

所有的边在输入中会且仅会出现一次。再接着 N1N-1 行,每行两个整数 Xi,YiX_i,Y_i,表示顶点 XiX_iYiY_i 之间的边是 TT 的一条边。

输出格式

输出最小的 SS

6 9
1 2 2
1 3 2
2 3 3
3 4 3
1 5 1
2 6 3
4 5 4
4 6 7
5 6 6
1 3
2 3
3 4
4 5
4 6
8

提示

(4,6)(4,6) 的权由 77 修改为 33,代价为 44
(1,2)(1,2) 的权由 22 修改为 33,代价为 11
(1,5)(1,5) 的权由 11 修改为 44,代价为 33

所以总代价为 4+1+3=84+1+3=8

1N50,1M1500,1Wi10001 \le N \le 50,1 \le M \le 1500,1 \le W_i \le 1000