博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 10803 Thunder Mountain
阅读量:6910 次
发布时间:2019-06-27

本文共 1740 字,大约阅读时间需要 5 分钟。

题意:给你n个城市的坐标,任意两个城市都是有通路的(无向的)要你算出所有点之间最短路(显然就是Floyd),然后要满足一个条件,任意两点的直接连线不能大于10,所以我们在建图的时候要算出任意两点的直接相连距离,如果有的大于10,我们将它变为INF,相当于这两点间是没有通路的。做完这个处理后就是直接的Floyd

输出的意思是,要保证任意两点间都是连通的(也就是任意两点的最短路都不是INF,因为没有通路的话最后最短路会为INF),如果不能满足的话就输出失败

如果能满足,也就是所有两点间的最短路都知道,那么找到最大的那个,输出,保留四位小数

 

水题啊水题啊水题啊!!!!!!…………………………题目给的那个公式都没用……………………………………

#include 
#include
#include
#define N 110#define INF 1000000000.0double g[N][N];int x[N],y[N];int n;double dis(int i , int j){ return sqrt( 1.*(x[i]-x[j])*(x[i]-x[j])+1.*(y[i]-y[j])*(y[i]-y[j]) ); }void Floyd(){ int i,j,k; for(k=1; k<=n; k++) for(i=1; i<=n; i++) for(j=1; j<=n; j++) if( g[i][k]+g[k][j] < g[i][j]) g[i][j]=g[i][k]+g[k][j]; return ;}void print_ans(int T){ double ans=0; int OK=1; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(i!=j) { if(g[i][j]>ans) ans=g[i][j]; } printf("Case #%d:\n",T); if( fabs(ans-INF)<0.001 ) printf("Send Kurdy\n"); else printf("%.4f\n",ans ); printf("\n"); return ;}int main(){ int T; scanf("%d",&T); for(int t=1; t<=T; t++) { scanf("%d",&n); for(int i=1; i<=n; i++) scanf("%d%d",&x[i],&y[i]); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) g[i][j]=INF; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(i!=j) { g[i][j]=dis(i,j); if(g[i][j] > 10.0) g[i][j]=INF; } Floyd(); print_ans(t); }}

转载于:https://www.cnblogs.com/scau20110726/archive/2012/11/24/2786485.html

你可能感兴趣的文章
iOS -- 拨打电话
查看>>
模仿CyclicBarrier,自定义自己屏障类
查看>>
Vue+Vue-router微信分享功能
查看>>
1.数码相框-相框框架分析(1)
查看>>
Javascript中的原型继承具体解释
查看>>
Python基础之(三)----PyGame安装步骤
查看>>
MYSQL SHOW VARIABLES简介
查看>>
Win8Metro(C#)数字图像处理--2.8图像线性变换
查看>>
解决eclipse不识别Android手机的问题
查看>>
axel命令 文件下载
查看>>
python基础训练题1-列表操作
查看>>
编程学习资源
查看>>
selenium+python自动化95-弹出框死活定位不到
查看>>
[Asp.net core]使用Polly网络请求异常重试
查看>>
user-agent
查看>>
C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码
查看>>
java 正则例子
查看>>
SpringBoot乱码
查看>>
MySQL远程连接失败(错误码:2003)
查看>>
EMQ 注意事项
查看>>