http://poj.org/problem?id=2253

题意 : 题目是说,有这样一只青蛙Freddy,他在一块石头上,他呢注意到青蛙Fiona在另一块石头上,想去拜访,但是两块石头太远了,所以他只有通过别的石头跳过去,所以,从他的石头到Fiona的石头每一条可走的路,假设是n条,就需要你求出frog distance,这个所谓的距离就是指这n条路中,每条路选取组成这条路中最长的那边,最后一共有n条边,找这n条边里最短的那一条输出。

思路 : 就是一个最短路的问题,不过不需要求最短路的权值和,只需要求出最大跳即可,还要注意,不管几行坐标,前两行分别是Freddy的位置和Fiona的位置,最后输出,不过很多人倒是用了克鲁斯卡尔和prim做的,我一直不明白这个题为什么会转化成最小生成树.........好吧,我才疏学浅..........

这是几组测试数据:


Scenario #
Frog Distance = 5.000 Scenario #
Frog Distance = 1.414 Scenario #
Frog Distance = 1.414 Scenario #
Frog Distance = 1.000 Scenario #
Frog Distance = 134.350 Scenario #
Frog Distance = 1.414 Scenario #
Frog Distance = 1408.557

对了,每一行输出有一空行,因为一开始没注意结果PE了一次,又一次证明了我有多粗心。。。。。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std; const int maxn = ;
const int oo = << ; double map[maxn][maxn];
int n,m;
double x[maxn],y[maxn]; void floyd()
{
for(int k = ; k < n ; k++)
{
for(int i = ; i < n ; i++) //主要针对由i到j的松弛,最终任意两点间的权值都会被分别松弛为最大跳的最小(但每个两点的最小不一定相同)
{
for(int j = ; j < n ; j++)
{
if(map[i][j] > map[i][k]&&map[i][j] > map[k][j])//当边ik,kj的权值都小于ij时,则走i->k->j路线,否则走i->j路线
{
if(map[i][k] > map[k][j]) //当走i->k->j路线时,选择max{ik,kj},只有选择最大跳才能保证连通
map[i][j] = map[i][k];
else
map[i][j] = map[k][j];
} }
}
}
} void Init()
{
for(int i = ; i < n ; i++)
{
for(int j = ; j < n ; j++)
{
map[i][j] = oo ;
}
map[i][i] = ;
}
} int main()
{
int cnt = ;
while(~scanf("%d",&n)&&n)
{
cnt++;
Init();
for(int i = ; i < n ; i++)
{
scanf("%lf %lf",&x[i],&y[i]);
}
for(int i = ; i < n ; i++)
{
for(int j = ; j < n ; j++)
{
map[i][j] = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
}
floyd();
printf("Scenario #%d\n",cnt);
printf("Frog Distance = %.3f\n\n",map[][]);
}
return ;
}

最新文章

  1. 智力火柴游戏Android源码项目
  2. dojo GridX 用法
  3. LYDSY模拟赛day3 序列
  4. avalon2的后端渲染实践
  5. [ucgui] 对话框3——GUIBuilder生成界面c文件及修改
  6. SQL Server 内存中OLTP内部机制概述(四)
  7. java正则API简单解析
  8. NOI LINUX装机记
  9. javascript将浮点数转换成整数的三个方法
  10. LintCode-乱序字符串
  11. Hadoop获得先进的步步高(四)-试Hadoop
  12. Java泛型类型擦除导致的类型转换问题
  13. SQL Server 安装报错找不到vc_red.msi
  14. Java NIO学习笔记六 SocketChannel 和 ServerSocketChannel
  15. 【原】Java学习笔记031 - 常用类
  16. 工程实践:给函数取一个&quot;好&quot;的名字
  17. python之OpenCv(三)---基本绘图
  18. CVE_2012_1876堆溢出分析
  19. Java ascii码值转为输出ascii码
  20. Html中video的属性和方法大全

热门文章

  1. centos6.5安装fpm打包工具
  2. 私人定制自己的linux小系统
  3. linux 关机方式
  4. haproxy 常用acl规则与会话保持
  5. python杂记-2(python之文件)
  6. impdp ORA-29913: error in executing ODCIEXTTABLEOPEN callout
  7. 第一个leapmotion的小游戏
  8. 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表中的标识列指定显式值
  9. Android修改system只读权限
  10. phpcms v9 企业黄页加入企业会员提示“请选择企业库类型!”