#arc0293. [arc029_3]高橋君と国家
[arc029_3]高橋君と国家
问题
高桥君在游戏中经营一个国家。
这个国家有 个城市和 条道路。每条道路直接连接两个不同的城市,道路上没有其他城市。而且,对于任意的两个城市,连接它们的道路最多只有一条。
最开始,所有的道路都没有铺设,每个城市也没有设置交易所。
为了国家的发展,高桥君决定铺设道路并建设交易所。
对于任意的城市,如果满足以下条件之一,国家就被称为“良好状态”。
- 对于该城市,已经建设了交易所。
- 对于该城市,虽然没有建设交易所,但通过铺设的道路从该城市可以到达另一个建设了交易所的城市。
城市编号为 到 ,道路编号为 到 。在城市 上建设交易所需要 枚金币,铺设道路 需要 枚金币。
因为高桥君没有太多金币,所以希望尽量减少实现“良好状态”所需的金币数量。
请编写程序来计算所需金币的最小值。
输入
输入从标准输入读取,其格式如下。
: :
- 第 行包含两个整数 和 ,用空格分隔。表示一共有 个城市和 条道路。
- 第 行到第 行是整数 ,用于表示在城市 上建设交易所需要的金币数量。
- 第 行到第 行是 个整数 、、,用空格分隔。表示第 条道路连接城市 和城市 ,铺设道路需要 枚金币。
部分分
本问题设有部分分。
- 对于满足条件 和 的数据集 ,如果得出了正确的答案,则可以获得 分。
- 对于满足条件 和 的数据集 ,除了上述以外,还可以获得额外的 分。
- 对于满足条件 和 的数据集 ,除了上述以外,还可以获得额外的 分。
- 对于没有附加限制的数据集 ,除了上述以外,还可以获得额外的 分。
输出
请输出作为实现“良好状态”所需的最小金币数量。在输出末尾要包含换行符。
示例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
城市和道路的布局如下图所示。
按照以下条件设置交易所并铺设道路。
- 在城市 建立交易所。建立交易所需要 枚金币。
- 在城市 建立交易所。建立交易所需要 枚金币。
- 在城市 建立交易所。建立交易所需要 枚金币。
- 铺设道路 (连接城市 和城市 )。铺设道路需要 枚金币。
- 铺设道路 (连接城市 和城市 )。铺设道路需要 枚金币。
- 铺设道路 (连接城市 和城市 )。铺设道路需要 枚金币。
- 铺设道路 (连接城市 和城市 )。铺设道路需要 枚金币。
最终城市和道路的状态如下图所示。在这里,标有两层边框的是设置了交易所的城市,用双实线表示铺设的道路。
在这种情况下,国家可以被视为“良好状态”。事实上,
- 城市 建立了交易所。
- 城市 没有建立交易所,但可以通过铺设的道路 到达建立了交易所的城市 。
- 城市 建立了交易