T. 公路修建

    Type: RemoteJudge 1000ms 128MiB

公路修建

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目描述

某国有 nn 个城市,它们互相之间没有公路相通,因此交通十分不便。为解决这一“行路难”的问题,政府决定修建公路。修建公路的任务由各城市共同完成。

修建工程分若干轮完成。在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路。政府负责审批这些申请以决定是否同意修建。

政府审批的规则如下:

  1. 如果两个或以上城市申请修建同一条公路,则让它们共同修建;
  2. 如果三个或以上的城市申请修建的公路成环。如下图,A 申请修建公路 AB,B 申请修建公路 BC,C 申请修建公路 CA。则政府将否决其中最短的一条公路的修建申请;
  3. 其他情况的申请一律同意。

一轮修建结束后,可能会有若干城市可以通过公路直接或间接相连。这些可以互相连通的城市即组成“城市联盟”。在下一轮修建中,每个“城市联盟”将被看作一个城市,发挥一个城市的作用。

当所有城市被组合成一个“城市联盟”时,修建工程也就完成了。

你的任务是根据城市的分布和前面讲到的规则,计算出将要修建的公路总长度。

输入格式

第一行一个整数 nn,表示城市的数量。(n5000n \leq 5000

以下 nn 行,每行两个整数 xxyy,表示一个城市的坐标。(106x,y106-10^6 \leq x,y \leq 10^6

输出格式

一个实数,四舍五入保留两位小数,表示公路总长。(保证有唯一解)

4
0 0
1 2
-1 2
0 4
6.47

提示

修建的公路如图所示:

图3【B】

Not Claimed
Status
Done
Problem
32
Open Since
2026-1-20 0:00
Deadline
2026-2-28 23:59
Extension
24 hour(s)