HDU 1875 畅通工程再续 Prim最小生成树
来源:互联网 发布:会议纪要整合软件 编辑:程序博客网 时间:2024/04/26 09:03
畅通工程再续
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 23327 Accepted Submission(s): 7490
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!
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#define INF 2000#define M 105using namespace std;struct point{ int x,y;}P[M];int T,n;double mp[M][M],dis[M];bool vis[M];double distan(int x1,int y1,int x2,int y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}void init(){ int i,j; for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ if(i==j) mp[i][j]=0; //对mp[][]进行初始化 else mp[i][j]=INF; } }}void build(){ for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ double d=distan(P[i].x,P[i].y,P[j].x,P[j].y); if(d>=10&&d<=1000)mp[i][j]=mp[j][i]=d; } }}double prim(int n){ memset(vis,0,sizeof(vis)); double mi,sum; int pos; sum=0; for(int i=1;i<=n;i++)dis[i]=mp[1][i]; vis[1]=1; for(int i=1;i<n;i++){ mi=INF; for(int j=1;j<=n;j++){ if(!vis[j]&&dis[j]<mi){ mi=dis[j]; pos=j; } } if(mi==INF)return -1; sum+=mi; vis[pos]=1; for(int j=1;j<=n;j++){ if(!vis[j]&&dis[j]>mp[pos][j]){ dis[j]=mp[pos][j]; } } } return sum;}int main(){ scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d%d",&P[i].x,&P[i].y); } init(); build(); double ans=prim(n); if(ans==-1){ cout<<"oh!"<<endl; } else { ans*=100; printf("%.1lf\n",ans); } } return 0;}
0 0
- hdu 1875 畅通工程再续(最小生成树Prim)
- hdu 1875畅通工程再续-prim最小生成树
- hdu 1875 畅通工程再续 最小生成树prim
- HDU 1875 畅通工程再续 Prim最小生成树
- hdu 1875 畅通工程再续 【最小生成树-prim】
- hdoj 1875 畅通工程再续 ( 最小生成树--prim )
- 【最小生成树+Prim】杭电 hdu 1875 畅通工程再续
- HDU 1875 畅通工程再续 prim算法 最小生成树
- HDU-1875 畅通工程再续(最小生成树[Prim])
- Prim算法-最小生成树(附题:HDU-1875 畅通工程再续)
- hdu 1875 畅通工程再续(最小生成树,prim)
- HDU Problem 1875 畅通工程再续 【最小生成树Prim】
- 最小生成树 Prim hdu1875 畅通工程再续
- HDU1875 畅通工程再续 【最小生成树Prim】
- hdu1575畅通工程再续【最小生成树】cruskal&prim
- hdu 畅通工程再续(最小生成树)(Prim算法 && Kruskal算法)
- hdu 1233 还是畅通工程(Prim最小生成树)
- HDU 1863 畅通工程(最小生成树prim算法)
- Django用户认证系统
- 神器 mimikatz - 直接抓取 Windows 明文密码
- Android 编译静态链接的可执行文件
- java部分关键字理解及解析
- UItableView动态刷新数据 --------->>>组、行动态加载
- HDU 1875 畅通工程再续 Prim最小生成树
- Python 爬虫入门(二)—— IP代理使用
- 三级联动效果(例:省-市-区)
- 提交时提示ip被记录,防注入系统的利用
- 设计模式之单例模式
- 输入输出组织
- spring整合mybatis 报creating bean with name 'checkReformOrderController': Injection of autowired
- hihocoder #1196 : 高斯消元·二
- navicat提权及星外主机注册表mssql密码位置