P15818 [JOI 2015 Final] JOI 公园 / JOI Park

题目描述

为筹备 20XX 年在 IOI 国举办的奥运会,决定对 IOI 国内的 JOI 公园进行整修。JOI 公园内有 $N$ 个广场,编号为 $1$ 到 $N$。连接这些广场的有 $M$ 条道路,编号为 $1$ 到 $M$。道路 $i$ ($1 \le i \le M$) 双向连接广场 $A_i$ 和广场 $B_i$,长度为 $D_i$。从任何一个广场都可以通过若干条道路到达其他任何广场。 整修计划如下:首先,选择一个非负整数 $X$,然后在所有**距离广场 1 不超过 $X$** 的广场(包括广场 1 本身)之间,两两用地下通道连接起来。这里,广场 $i$ 与广场 $j$ 的距离定义为从广场 $i$ 到广场 $j$ 所需经过的道路长度之和的最小值。整修计划中有一个关于地下通道整修成本的整数 $C$。修建这些地下通道的总成本为 $C \times X$。 接着,将所有**已被地下通道连接的广场对**之间的道路全部拆除。拆除道路不需要成本。 最后,对所有**未被拆除而保留下来**的道路进行修补。修补一条长度为 $d$ 的道路所需的成本为 $d$。 在整修计划实施前,JOI 公园内没有地下通道。请求出整修 JOI 公园所需的总成本的最小值。 ### 任务 给定 JOI 公园的广场信息以及关于地下通道整修成本的整数,请编写一个程序,计算整修 JOI 公园所需的总成本的最小值。

输入格式

从标准输入读取以下数据。 * 第一行包含三个以空格分隔的整数 $N, M, C$。这表示有 $N$ 个广场,$M$ 条道路,以及地下通道整修成本相关的整数为 $C$。 * 接下来的 $M$ 行中,第 $i$ 行 ($1 \le i \le M$) 包含三个以空格分隔的整数 $A_i, B_i, D_i$。这表示道路 $i$ 连接广场 $A_i$ 和广场 $B_i$,长度为 $D_i$。

输出格式

向标准输出输出一行,包含一个整数,表示整修 JOI 公园所需的总成本的最小值。

说明/提示

### 样例解释 1 在这个样例中,选择 $X = 3$,将所有距离广场 1 不超过 $3$ 的广场(广场 1、广场 2、广场 3)两两用地下通道连接。此时,总成本为 $2 \times 3 + 3 + 5 = 14$。这是最小值。 ### 样例解释 2 在这个样例中,当 $X = 0$ 时,总成本最小。 ### 样例解释 3 在这个样例中,选择 $X = 5$,将所有广场两两用地下通道连接时,总成本最小。 ### 数据范围 所有输入数据满足以下条件: * $2 \le N \le 100000$。 * $1 \le M \le 200000$。 * $1 \le C \le 100000$。 * $1 \le A_i \le N$ ($1 \le i \le M$)。 * $1 \le B_i \le N$ ($1 \le i \le M$)。 * $A_i \ne B_i$ ($1 \le i \le M$)。 * $(A_i, B_i) \ne (A_j, B_j)$ 且 $(A_i, B_i) \ne (B_j, A_j)$ ($1 \le i < j \le M$)。(即没有重边,且边是无向的) * $1 \le D_i \le 100000$ ($1 \le i \le M$)。 * 保证在给定的输入数据中,从任何一个广场都可以通过若干条道路到达其他任何广场。 ### 子任务 #### 子任务 1 [15 分] 满足以下条件: * $N \le 100$。 * $M \le 200$。 * $C \le 100$。 * $D_i \le 10$ ($1 \le i \le M$)。 #### 子任务 2 [45 分] 满足以下条件: * $N \le 100$。 * $M \le 4000$。 #### 子任务 3 [40 分] 没有额外限制。 翻译由 DeepSeek V3.2 完成