比赛场次 192
比赛名称 20110318
比赛状态 已结束比赛成绩
开始时间 2013-03-27 08:00:00
结束时间 2013-03-27 11:00:00
开放分组 全部用户
注释介绍
题目名称 公路修建
输入输出 roadz.in/out
时间限制 3000 ms (3 s)
内存限制 256 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
GravatarQhelDIV AAAAAAAAAA 1.597 s 3.37 MiB 100
Gravatarfeng AAAAAAAAAA 1.812 s 3.24 MiB 100
GravatarCAX_CPG AAAAEEEEEE 0.064 s 3.31 MiB 40

公路修建

★★☆   输入文件:roadz.in   输出文件:roadz.out   简单对比
时间限制:3 s   内存限制:256 MiB

【问题描述】

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

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

政府审批的规则如下:

(1) 如果两个或以上城市申请修建同一条公路,则让它们共同修建;

(2) 如果三个或以上的城市申请修建的公路成环。如下图, A 申请修建公路 AB , B 申请修建公路 BC , C 申请修建公路 CA 。则政府将否决其中最短的一条公路的修建申请;

(3) 其他情况的申请一律同意。

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

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

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

【输入】

第一行一个整数 n ,表示城市的数量。 (n ≤ 5000)

以下 n 行,每行两个整数 x 和 y ,表示一个城市的坐标。 (-1000 000 ≤ x , y ≤ 1 000 000)

【输出】

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

【样例】

roadz.in

4
0 0
1 2
-1 2
0 4

roadz.out

6.47

修建的公路如图 所示: