题目名称 | 325. 公路修建 |
---|---|
输入输出 | roadz.in/out |
难度等级 | ★★☆ |
时间限制 | 3000 ms (3 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cqw 于2009-04-23加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:65, 提交:279, 通过率:23.3% | ||||
zhengtn03 | 100 | 0.189 s | 3.64 MiB | C++ |
zhengtn03 | 100 | 0.191 s | 3.63 MiB | C++ |
zhengtn03 | 100 | 0.497 s | 0.45 MiB | C++ |
rewine | 100 | 0.554 s | 1.74 MiB | C++ |
侠客行 | 100 | 0.600 s | 0.41 MiB | C++ |
隨風巽 | 100 | 0.613 s | 0.43 MiB | C++ |
ミント | 100 | 0.623 s | 0.39 MiB | C++ |
REALIZE_BEYOND | 100 | 0.626 s | 0.41 MiB | C++ |
forever | 100 | 0.635 s | 0.43 MiB | C++ |
Fancy、 | 100 | 0.660 s | 0.43 MiB | C++ |
本题关联比赛 | |||
20110318 | |||
20110318 | |||
HAOI2009 模拟试题3 | |||
HAOI2009 模拟试题3 |
关于 公路修建 的近10条评论(全部评论) | ||||
---|---|---|---|---|
这题真恶心
father
2017-10-11 23:41
4楼
| ||||
内存hold不住啊
| ||||
第二个条件完全是卖萌用的……就是一道裸Prim么……
但是!!!它居然在卡!空!间!还有,这回感受了一下define有多快…… | ||||
最小生成树的普利姆算法。
原来 min_element 的比较函数传进去的是值不是指针,让我调试了半天没发现……
后来发现还得用 double 存储和计算,真是坑死爹了。 |
【问题描述】
某国有 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
修建的公路如图 所示: