普里姆算法(Prim算法)C - 畅通工程再续(再看)
来源:互联网 发布:手机录音播放软件 编辑:程序博客网 时间:2024/05/22 01:55
C - 畅通工程再续
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。
Input
输入包括多组数据。输入首先包括一个整数T(T <= 200),代表有T组数据。
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
Output
每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。如果无法实现工程以达到全部畅通,输出”oh!”.
Sample Input
2210 1020 2031 12 21000 1000
Sample Output
1414.2oh!
#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#define inf 999999double map[105][105],dis[105],vis[105],sum;struct node{ int x,y;}q[1000];void prim(int n){ int i,j,l=1; int p; double min; memset(vis,0,sizeof(vis)); for(i=1; i<=n; i++) dis[i]=map[1][i]; vis[1]=1; for(i=1; i<n; i++) { min=inf; for(j=1; j<=n; j++) { if(!vis[j]&&dis[j]<min) { min=dis[j]; p=j; } } if(min>=inf||min<10) {l=0;break;} sum+=min; vis[p]=1; for(j=1; j<=n; j++) if(!vis[j]&&dis[j]>map[p][j]) dis[j]=map[p][j]; } if(l) printf("%.1lf\n",sum*100); else printf("oh!\n");}int main(){ int T,i,j,c; double d; scanf("%d",&T); while(T--) { sum=0; scanf("%d",&c); for(i=1; i<=c; i++) scanf("%d%d",&q[i].x,&q[i].y); for(i=1; i<=c; i++) for(j=1; j<=c; j++) { d=sqrt((q[j].x-q[i].x)*(q[j].x-q[i].x)+(q[j].y-q[i].y)*(q[j].y-q[i].y)); if(d<10||d>1000) map[i][j]=map[j][i]=inf; else map[i][j]=map[j][i]=d; } prim(c);} return 0;}
0 0
- 普里姆算法(Prim算法)C - 畅通工程再续(再看)
- HDU1875-畅通工程再续(Prim算法+Kruskal算法)
- 畅通工程再续hdu-1875(prim算法)
- HDU 1863 畅通工程(prim算法)
- (prim算法)A - 畅通工程
- (prim算法)B - 还是畅通工程
- HDU1879 继续畅通工程(Prim算法)
- 畅通工程2(prim算法)
- hdu-1233-还是畅通工程(普里姆(Prim)算法)
- hdu 畅通工程再续(最小生成树)(Prim算法 && Kruskal算法)
- HDU1233-还是畅通工程(Prim算法+Kruskal算法)
- HDU1863-畅通工程(Prim算法+Kruskal算法)
- HDU1879-继续畅通工程(Prim算法+Kruskal算法)
- hdoj 1875 畅通工程再续 (最小生成树之prim算法)
- hdu1875 畅通工程再续 最小生成树(prim算法)
- Prim算法-最小生成树(附题:HDU-1875 畅通工程再续)
- HDoj-1875-畅通工程再续-prim算法
- HDU 1863 畅通工程(最小生成树prim算法)
- const参数,const返回值与const函数
- 十天学会php之第五天
- CentOS 6.3上SVN安装过程及使用手册
- A*(路径搜索)算法
- 类继承几点常见注意事项
- 普里姆算法(Prim算法)C - 畅通工程再续(再看)
- JSONObject jsonObject = new JSONObject()执行错误
- Codeforces Round #261 (Div. 2) D. Pashmak and Parmida's problem
- Apollo 入门指导
- hdu1251-统计难题
- 【MAC XAMPP】mysql的启动 与 PS命令的详解
- CentOS 6.5 Varnish缓存服务详解及应用实现
- 最小生成树,转别人的
- 杭电1421 搬寝室(dp)