N - 畅通工程再续 - hdu 1875
Description
Input
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
Output
Sample Input
2 2 10 10 20 20 3 1 1 2 2 1000 1000
Sample Output
1414.2 oh!
************************************注意:不能用int提高精度判定,只能使用double..要不就会WA#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
using namespace std; const int maxn = ;
const double oo = 0x7fffffff; double G[maxn][maxn];
struct point{int x, y;}p[maxn]; double Len(point a, point b)//求两个小岛的距离,不合法返回oo
{
int x = a.x-b.x;
int y = a.y-b.y;
double l = sqrt(x*x + y*y); if(l>=10.0 && l<=1000.0)
return l;//合法范围
return oo;
}
double Prim(int N)
{
int vis[maxn]={, };
int i, T = N-;
double dist[maxn], ans = ; for(i=; i<=N; i++)
dist[i] = G[][i];
while(T--)
{
int k = -;
double mini = oo; for(i=; i<=N; i++)
{
if(!vis[i] && mini > dist[i])
mini = dist[i], k=i;
} if(k == -)return -;
vis[k] = true, ans += mini; for(i=; i<=N; i++)if(!vis[i])
dist[i] = min(dist[i], G[k][i]);
} return ans;
} int main()
{
int T; scanf("%d", &T); while(T--)
{
int i, j, N; scanf("%d", &N); for(i=; i<=N; i++)
scanf("%d%d", &p[i].x, &p[i].y); for(i=; i<=N; i++)
for(j=i; j<=N; j++)
{
if(j == i)G[i][j] = 0.0;
else G[i][j] = G[j][i] = Len(p[i], p[j]);
} double ans = Prim(N); if(ans < )
printf("oh!\n");
else
printf("%.1f\n", ans* );
} return ; }
N - 畅通工程再续 - hdu 1875的更多相关文章
- (最小生成树) 畅通工程再续 -- HDU --1875
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1875 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 畅通工程再续 HDU - 1875
相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政 ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
- HDU 1875:畅通工程再续(最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1875 畅通工程再续(kruskal)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU - 1875_畅通工程再续
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Desc ...
随机推荐
- CDOJ 92 Journey(LCA&RMQ)
题目连接:http://acm.uestc.edu.cn/#/problem/show/92 题意:给定一棵树,最后给加一条边,给定Q次查询,每次查询加上最后一条边之后是否比不加这条边要近,如果近的话 ...
- centos6.3 配置NTP服务
NTP简介: NTP(Network Time Protocol)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正.本例讲解如何在CentOS ...
- Python之路,Day13-----暂无正在更新中
Python之路,Day13-----暂无正在更新中
- 9.7noip模拟试题
题目名称 日历游戏 最大公约数 密码 英文代号 calendar gcd pasuwado 输入文件名 calendar.in gcd.in pasuwado.in 输出文件名 calendar.ou ...
- CSS入门学习(转)
一.基础学习 1.何为CSS CSS是Cascading Style Sheets(层叠样式表)的简称,是一种标记语言,它不需要编译,可以直接由浏览器执行(属于浏览器解释型语 言). CSS文件也可以 ...
- canvas sprite动画 简单封装
function SpritCtx(img, size, pos, turnTime, totalCount, ctx) { size = size || {}; pos = pos || {}; / ...
- 学习CSS一些事(下)
2.浮动(float) 浮动(float)特点:1.元素会左移.右移,直到触碰到容器为止. 2.设置浮动元素,仍旧处于标准文档流. 3.当元素没有设置宽度值,而设置了浮动属性,元素的宽度随着内容 ...
- iOS移动端架构的那些事!(转载)
一个app的初始阶段,必然是先满足各种业务需求.然后,经过多次版本迭代之后,先前的由于急于满足需求而导致的杂乱代码则会充斥整个项目.而此时,项目有了一定的规模,有了一定数量的开发人员,那么为了达到快速 ...
- JavaScript--格式化当前时间
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- Oracle高级查询,事物,过程及函数
一 数值函数 数值 abs,ceil,floor,round,trunc字符串 instr,substr SQL>SELECT 'ABS':'|| ABS(-12.3) FROM DUAL; 运 ...