hdu 1875 畅通工程再续(Prim)
2016-01-13 19:15
211 查看
Problem Description
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。Input
输入包括多组数据。输入首先包括一个整数T(T <= 200),代表有T组数据。每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
Output
每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。如果无法实现工程以达到全部畅通,输出”oh!”.Sample Input
2 2 10 10 20 20 3 1 1 2 2 1000 1000
Sample Output
1414.2 oh!
注意:题意是说任意两个小岛之间的直接连线必须要在10-1000之间,而不是任意两点之间的路径之和。
#include <iostream> #include <memory.h> #include <stdio.h> #include <math.h> #define NUM 105 #define INF 0x3f3f3f3f using namespace std; double lowcost[NUM]; int n; double g[NUM][NUM]; bool vis[NUM]; struct point { int x,y; } p[NUM]; double Prim() { double ans=0; memset(vis,false,sizeof(vis)); memset(lowcost,INF,sizeof(lowcost)); for(int i=1; i<=n; i++) lowcost[i]=g[1][i]; vis[1]=true; lowcost[1]=0; for(int i=2; i<=n; i++) { double Min=INF; int k=-1; for(int j=1; j<=n; j++) { if(!vis[j]&&lowcost[j]<Min) { Min=lowcost[j]; k=j; } } if(Min==INF) return -1; if(Min<10||Min>1000) return -1; ans+=Min; vis[k]=true; for(int j=1; j<=n; j++) { if(!vis[j]&&lowcost[j]>g[k][j]&&g[k][j]!=INF) { lowcost[j]=g[k][j]; } } } return ans; } int main() { int t; cin>>t; for(int cas=0; cas<t; cas++) { cin>>n; for(int i=1; i<=n; i++) { cin>>p[i].x>>p[i].y; } for(int i=1; i<=n; i++) { for(int j=i+1; j<=n; j++) { g[j][i]=g[i][j]=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y)); } } double ans=Prim(); if(ans==-1) { cout<<"oh!"<<endl; } else printf("%.1lf\n",ans*100); } return 0; }
相关文章推荐
- 静态fragment对象 onCreateView() 加载editVIew 不会刷新的问题
- drupal THEME主要文件
- spring 的普通类中如何取得session和request对象
- 初探IBM大数据处理平台BigInsights(1)
- hdu 2058 The sum problem
- IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
- json 特例
- 性能监控的好工具 - NewRelic 简介
- 百炼OJ1001
- spring 整合 redis,以及spring的RedisTemplate如何使用
- PreparedStatement 预编译原理
- iT大牛高老师免费收徒
- 保证数据的完整性
- 自定义组件实现跑马灯效果
- 增加响应header让ajax支持跨域
- 编写windows服务程序
- Java URL处理
- listView 滑动时 滑到一半自动滑动到对应的位置
- maven搭建jersey+Spring4+JPA+Druid+quartz
- RabbitMQ入门教程 For Java【3】 - Publish/Subscribe