HDU_1875_畅通工程再续
2016-02-20 21:58
253 查看
畅通工程再续
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 21954 Accepted Submission(s): 6948
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!
Author
8600
Source
2008浙大研究生复试热身赛(2)——全真模拟
Recommend
lcy
最小生成树
然后需要自己建下图
另外数据很多需要改成double
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> using namespace std; const double IN=1e9; const int MV=105; double g[MV][MV]; int pre[MV]; //图g pre连接信息 int nv; //实际点数 void pr_init() { for(int i=1;i<=nv;i++) for(int j=1;j<=nv;j++) g[i][j]=IN; } double Prim() //使用邻接矩阵O(V^2) { double d[MV]; //延伸的最短边长 double mi; bool p[MV];//点是否属于最小生成树 for(int i=2;i<=nv;i++) { p[i]=0; d[i]=g[1][i]; pre[i]=1; } d[1]=0; p[1]=1; double ans=0; for(int i=1;i<=nv-1;i++) { mi=IN; int k=0; for(int j=1;j<=nv;j++) if(!p[j]&&d[j]<mi) { mi=d[j]; k=j; } if(k==0) //g不连通 return -1; ans+=mi; //cout<<"ans "<<ans<<endl; p[k]=1; for(int j=1;j<=nv;j++) //更新最短距离 if(!p[j]&&g[k][j]!=IN&&d[j]>g[k][j]) { d[j]=g[k][j]; pre[j]=k; } } return ans; //找到最小生成树 } double x[MV],y[MV];//输入的点对 double dist(int i,int j) //第i个点与第j点的距离 { return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&nv); pr_init(); for(int i=1;i<=nv;i++) { scanf("%lf%lf",&x[i],&y[i]); for(int j=1;j<i;j++) { double d=dist(i,j); if(d>=10&&d<=1000) { g[i][j]=d; g[j][i]=d; } } } double ans=Prim(); if(ans==-1) printf("oh!\n"); else printf("%.1f\n",ans*100.0); } return 0; }
相关文章推荐
- Android-MVVM架构-Data Binding的使用
- [iOS]UIView中的坐标转换
- LAMP的搭建
- HTML5开发移动web应用——SAP UI5篇(9)
- Android-MVVM架构-Data Binding的使用
- source insight用于C语言编程的工具脚本
- NEC 框架规范 css reset
- -canOpenURL: failed for URL: "kindle://home" - error: "This app is not allowed to query for scheme k
- 程序员为什么要写博客
- HTML总结
- 从初识Linux到离不开系列(七)核心——传输
- Unity3d插件 之 Easytouch
- 函数指针的引用
- PHP中FOREACH()用法
- PHP中"->"和"=>"的区别
- 广度优先搜索
- Android源码下载小结
- HDU_2122_Ice_cream’sWorldIII
- PAT题库-1064. Complete Binary Search Tree (30)
- Experimental Educational Round: VolBIT Formulas Blitz A