AT_arc029_3.[ARC029C] 高橋君と国家
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
高桥君正在游戏中经营一个国家。
国家有 N 个城市和 M 条道路。每条道路直接连接两个不同的城市,且道路中间没有其他城市。此外,任意两个城市之间,直接连接它们的道路最多只有一条。
最初,所有道路都未铺设,所有城市也都没有设置交易所。
为了国家的发展,高桥君决定铺设道路并设置交易所。
对于每个城市,只要满足以下任一条件,国家就被认为处于“良好状态”:
- 该城市设置了交易所。
- 该城市没有设置交易所,但可以仅通过已铺设的道路到达设置了交易所的其他城市。
城市编号为 1 到 N,道路编号为 1 到 M。在城市 i 设置交易所需要 ci 枚金币。铺设第 i 条道路需要 ri 枚金币。
由于金币有限,请你求出使国家处于“良好状态”所需金币的最小总数。
输入格式
输入通过标准输入给出,格式如下:
N M
c1
c2
⋮
cN
a1 b1 r1
a2 b2 r2
⋮
aM bM rM
- 第 1 行包含两个整数 N (2≤N≤100000) 和 M (1≤M≤200000),表示有 N 个城市和 M 条道路。
- 第 2 行到第 N+1 行,每行一个整数 ci (1≤ci≤1000000000),表示在城市 i 设置交易所需要的金币数。
- 第 N+2 行到第 N+M+1 行,每行三个整数 ai, bi (1≤ai<bi≤N), ri (1≤ri≤1000000000),表示第 i 条道路连接城市 ai 和 bi,铺设该道路的花费为 ri。
输出格式
请输出使国家处于“良好状态”所需的最小金币总数。输出应以换行符结尾。
输入输出样例
输入#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
输入#2
3 3 50 50 50 1 2 60 1 3 60 2 3 60
输出#2
150
输入#3
5 7 80 70 60 50 40 1 3 20 1 4 70 1 5 30 2 3 30 2 4 90 3 4 40 4 5 80
输出#3
160
说明/提示
部分分
本题设有部分分。
- 若能通过满足 N≤8 且 M≤10 的数据集 1,则可获得 10 分。
- 若能通过满足 N≤12 且 M≤66 的数据集 2,则可获得额外 20 分。
- 若能通过满足 N≤3000 且 M≤6000 的数据集 3,则可获得额外 30 分。
- 若能通过无额外限制的数据集 4,则可获得额外 40 分。
样例解释 1
城市和道路的布局如下图所示。

按如下方式设置交易所和铺设道路:
- 在城市 1 设置交易所,花费 40 枚金币。
- 在城市 3 设置交易所,花费 30 枚金币。
- 在城市 5 设置交易所,花费 70 枚金币。
- 铺设道路 1(连接城市 1 和 2),花费 40 枚金币。
- 铺设道路 3(连接城市 1 和 4),花费 60 枚金币。
- 铺设道路 7(连接城市 5 和 6),花费 60 枚金币。
- 铺设道路 8(连接城市 6 和 7),花费 50 枚金币。
最终城市和道路的状态如下图所示。图中,设置了交易所的城市用双线框表示,铺设的道路用双线表示。

此时,国家处于“良好状态”。具体来说:
- 城市 1 设置了交易所。
- 城市 2 没有设置交易所,但可以通过已铺设的道路 1 到达设置了交易所的城市 1。
- 城市 3 设置了交易所。
- 城市 4 没有设置交易所,但可以通过已铺设的道路 3 到达设置了交易所的城市 1。
- 城市 5 设置了交易所。
- 城市 6 没有设置交易所,但可以通过已铺设的道路 7 到达设置了交易所的城市 5。
- 城市 7 没有设置交易所,但可以通过已铺设的道路 7 和 8 到达设置了交易所的城市 5。
因此,总共需要 40+30+70+40+60+60+50=350 枚金币。
样例解释 2
在所有城市都设置交易所会更便宜。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?