#arc0293. [arc029_3]高橋君と国家

[arc029_3]高橋君と国家

问题

高桥君在游戏中经营一个国家。

这个国家有 NN 个城市和 MM 条道路。每条道路直接连接两个不同的城市,道路上没有其他城市。而且,对于任意的两个城市,连接它们的道路最多只有一条。

最开始,所有的道路都没有铺设,每个城市也没有设置交易所。

为了国家的发展,高桥君决定铺设道路并建设交易所。

对于任意的城市,如果满足以下条件之一,国家就被称为“良好状态”。

  • 对于该城市,已经建设了交易所。
  • 对于该城市,虽然没有建设交易所,但通过铺设的道路从该城市可以到达另一个建设了交易所的城市。

城市编号为 11NN,道路编号为 11MM。在城市 ii 上建设交易所需要 cic_i 枚金币,铺设道路 ii 需要 rir_i 枚金币。

因为高桥君没有太多金币,所以希望尽量减少实现“良好状态”所需的金币数量。

请编写程序来计算所需金币的最小值。


输入

输入从标准输入读取,其格式如下。

NN MM c1c_1 c2c_2 : cNc_N a1a_1 b1b_1 r1r_1 a2a_2 b2b_2 r2r_2 : aMa_M bMb_M rMr_M

  • 11 行包含两个整数 N(2N100,000)N (2 ≦ N ≦ 100,000)M(1M200,000)M (1 ≦ M ≦ 200,000),用空格分隔。表示一共有 NN 个城市和 MM 条道路。
  • 22 行到第 NN 行是整数 ci(1ci1,000,000,000)c_i (1 ≦ c_i ≦ 1,000,000,000),用于表示在城市 ii 上建设交易所需要的金币数量。
  • N+2N+2 行到第 M+1M+1 行是 33 个整数 aia_ibib_iri(1aibiN)r_i (1 ≦ a_i < b_i ≦ N),用空格分隔。表示第 ii 条道路连接城市 aia_i 和城市 bib_i,铺设道路需要 rir_i 枚金币。

部分分

本问题设有部分分。

  • 对于满足条件 N8N ≦ 8M10M ≦ 10 的数据集 11,如果得出了正确的答案,则可以获得 1010 分。
  • 对于满足条件 N12N ≦ 12M66M ≦ 66 的数据集 22,除了上述以外,还可以获得额外的 2020 分。
  • 对于满足条件 N3,000N ≦ 3,000M6,000M ≦ 6,000 的数据集 33,除了上述以外,还可以获得额外的 3030 分。
  • 对于没有附加限制的数据集 44,除了上述以外,还可以获得额外的 4040 分。

输出

请输出作为实现“良好状态”所需的最小金币数量。在输出末尾要包含换行符。


示例1


7 8
40
50
30
70
70
80
80
1 2 40
1 3 50
1 4 60
2 5 90
3 4 80
4 5 110
5 6 60
6 7 50

示例1输出

350

城市和道路的布局如下图所示。

按照以下条件设置交易所并铺设道路。

  • 在城市 11 建立交易所。建立交易所需要 4040 枚金币。
  • 在城市 33 建立交易所。建立交易所需要 3030 枚金币。
  • 在城市 55 建立交易所。建立交易所需要 7070 枚金币。
  • 铺设道路 11(连接城市 11 和城市 22)。铺设道路需要 4040 枚金币。
  • 铺设道路 33(连接城市 11 和城市 44)。铺设道路需要 6060 枚金币。
  • 铺设道路 77(连接城市 55 和城市 66)。铺设道路需要 6060 枚金币。
  • 铺设道路 88(连接城市 66 和城市 77)。铺设道路需要 5050 枚金币。

最终城市和道路的状态如下图所示。在这里,标有两层边框的是设置了交易所的城市,用双实线表示铺设的道路。

在这种情况下,国家可以被视为“良好状态”。事实上,

  • 城市 11 建立了交易所。
  • 城市 22 没有建立交易所,但可以通过铺设的道路 11 到达建立了交易所的城市 11
  • 城市 33 建立了交易