QOJ.ac

QOJ

时间限制: 2 s 内存限制: 2048 MB 总分: 100

#2232. 范·迪塞尔

统计

在火星上探索洞穴系统是一项在地球上预先规划好的简单程序。每个洞穴系统包含若干个两两不连通的洞穴房间。由于这些洞穴房间无法从地表直接进入,你获得了一台挖掘机,以便在它们之间挖掘通道。

土壤并不均匀,运行挖掘机极其消耗柴油。为了节省柴油,你需要挖掘最少数量的通道,使得每个洞穴都能通过通道从地表到达。同时,生成的系统应以一种方式连接,使得从地表到达任何特定洞穴所需的通道数量最小化。

你对整个洞穴系统进行了扫描,现在知道了每个洞穴房间的危险等级。扫描结果还显示了哪些洞穴房间对,或者哪些洞穴房间与地表之间被土壤隔开,可以通过挖掘来创建通道。将一个洞穴房间的距离定义为:如果所有可能的通道都被挖掘出来,从地表到达该房间所需经过的最少通道数量。

出于安全原因,程序规定在挖掘过程中,必须先使距离最近(距离最小)的洞穴房间变得可达,然后才能使更远的洞穴房间变得可达。如果这不能唯一确定下一个要使其可达的房间,则应从候选者中选择最安全(危险等级最低)的房间。如果这仍不能唯一确定需要挖掘的通道,则必须从已经可达的起始位置中选择最安全的一个。

按照给定的顺序发现房间会迫使你多次穿过已挖掘的通道。你用来移动挖掘机的机器也会消耗柴油,尽管比挖掘机少得多。你想知道完成这项工作所需的柴油总量——这与需要穿过的通道数量成正比,从 0 开始计数,直到所有通道都被挖掘完毕。

输入格式

第一行包含两个整数 $N$ 和 $M$ ($1 \le N \le 2 \cdot 10^5$, $0 \le M \le 2 \cdot 10^5$),分别表示洞穴房间的数量(包括地表)和可能的洞穴通道数量。地表用 $0$ 表示,洞穴房间用 $1$ 到 $N-1$ 的整数表示,并按危险等级递增的顺序排列。接下来的 $M$ 行,每行包含两个整数,表示两个洞穴房间,或者一个洞穴房间与地表,它们之间被足够松软的土壤隔开,可以挖掘出一条连接通道。

输出格式

输出一个整数,表示按照规定程序使整个洞穴系统变得可达所需执行的通道穿行总次数。

样例

样例输入 1

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

样例输出 1

10

样例输入 2

5 4
0 1
1 2
2 3
3 4

样例输出 2

4

样例输入 3

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

样例输出 3

7

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.