QOJ.ac

QOJ

时间限制: 1 s 内存限制: 256 MB 总分: 100

#3153. JOI 公园

统计

为了准备 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 公园所需成本之和的最小值。

输入格式

从标准输入读取以下数据:

  • 第 1 行包含三个整数 $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 公园所需成本之和的最小值作为一个整数输出到标准输出。

数据范围

所有输入数据满足以下条件:

  • $2 \le N \le 100\,000$
  • $1 \le M \le 200\,000$
  • $1 \le C \le 100\,000$
  • $1 \le A_i \le N$ ($1 \le i \le M$)
  • $1 \le B_i \le N$ ($1 \le i \le M$)
  • $A_i \neq B_i$ ($1 \le i \le M$)
  • $(A_i, B_i) \neq (A_j, B_j)$ 且 $(A_i, B_i) \neq (B_j, A_j)$ ($1 \le i < j \le M$)
  • $1 \le D_i \le 100\,000$ ($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 4\,000$

子任务 3 [40 点]

无附加限制。

样例

输入 1

5 5 2
2 3 1
3 1 2
2 4 3
1 2 4
2 5 5

输出 1

14

说明:在该样例中,取 $X = 3$,将从广场 1 出发的距离在 3 以内的广场(广场 1、广场 2、广场 3)之间全部通过地下通道相互连接,整修成本之和为 $2 \times 3 + 3 + 5 = 14$。这是最小值。

输入 2

5 4 10
1 2 3
2 3 4
3 4 3
4 5 5

输出 2

15

说明:在该样例中,$X = 0$ 时整修成本之和最小。

输入 3

6 5 2
1 2 2
1 3 4
1 4 3
1 5 1
1 6 5

输出 3

10

说明:在该样例中,取 $X = 5$,将所有广场通过地下通道相互连接,整修成本之和最小。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.