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

题意:The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.
这句话很重要,题中求得是青蛙一次至少跳多远才能成功到达对方所在的地方;即求所有路径中每条路径中的最大距离的最小值(求一条1~2的路径使得路径上的最大边权最小)

floyd中更新距离改成更新最小的最大边权;

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define INF 0xfffffff
#define N 1100
using namespace std;
int n;
double maps[N][N]; struct node
{
int x,y;
}a[N];
void Floyd()
{
int i,j,k;
for(k=;k<=n;k++)
{
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
maps[i][j]=min(maps[i][j],max(maps[i][k],maps[k][j]));
}
}
}
} int main()
{
int i,j,k,x,y,t=; while(scanf("%d",&n),n)
{
memset(a,,sizeof(a)); k=; for(i=;i<=n;i++)
{
scanf("%d%d",&x,&y); for(j=;j<=k;j++)
{
double d=sqrt((x-a[j].x)*(x-a[j].x)+(y-a[j].y)*(y-a[j].y)); maps[i][j]=maps[j][i]=d;
} a[k].x=x,a[k].y=y,k++;
}
for(i=;i<=n;i++) maps[i][i]=; Floyd(); printf("Scenario #%d\nFrog Distance = %.3f\n\n",t++,maps[][]);
}
return ;
}

用Dij算法就相当与prim;

dist[i] 代表i点之前的那个点到i的最短距离;求最短中的最长;

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define INF 0xfffffff
#define N 1100
using namespace std;
int n,vis[N];
double maps[N][N],dist[N],ans;
struct node
{
int x,y;
}a[N];
void Dij()
{
int i,j,index;
dist[]=;
for(i=;i<=n;i++)
{
double Min=INF;
for(j=;j<=n;j++)
{
if(vis[j]==&&Min>=dist[j])
Min=dist[j],index=j;
}
vis[index]=;
if(ans<dist[index]&&dist[index]!=INF)
ans=dist[index];
if(index==)
return ;
for(j=;j<=n;j++)
{
if(vis[j]==)
dist[j]=min(dist[j],maps[index][j]);
}
}
}
int main()
{
int i,j,k,x,y,t=;
while(scanf("%d",&n),n)
{
memset(vis,, sizeof(vis));
memset(a,,sizeof(a));
for(i=;i<=n;i++)
dist[i]=INF;
k=;
for(i=;i<=n;i++)
{
scanf("%d%d",&x,&y);
for(j=;j<=k;j++)
{
double d=sqrt((x-a[j].x)*(x-a[j].x)+(y-a[j].y)*(y-a[j].y));
maps[i][j]=maps[j][i]=d;
}
a[k].x=x,a[k].y=y,k++;
}
for(i=;i<=n;i++)
maps[i][i]=;
ans=;
Dij();
printf("Scenario #%d\nFrog Distance = %.3f\n\n",t++,ans);
}
return ;
}

Frogger--poj2253的更多相关文章

  1. (最短路 Floyd diskstra prim)Frogger --POJ--2253

    题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  2. POJ-2253(最短路变形+dijikstra算法+求解所有路径中所有最长边中的一个最小值)

    frogger POJ-2253 这题的代码特别像prim求解最小生成树的代码,其实两者本来也很像. 这里的d数组不再维护的起点到该点的最短距离了,而是路径中的最长距离. #include<io ...

  3. kuangbin 最短路集合

    Til the Cows Come Home poj-2387 #include<iostream> #include<cstdio> #include<algorith ...

  4. POJ2253 Frogger

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34865   Accepted: 11192 Descrip ...

  5. poj2253 最短路 floyd Frogger

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28825   Accepted: 9359 Descript ...

  6. POJ2253——Frogger(Floyd变形)

    Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...

  7. POJ-2253 Frogger(最短路)

    https://vjudge.net/problem/POJ-2253 题意 公青蛙想到母青蛙那里去,期间有许多石头,公青蛙可以通过这些石头跳过去.问至少要跳的最大距离,即所有路径上石头间的最大距离的 ...

  8. poj2253 Frogger(Floyd)

    题目链接 http://poj.org/problem?id=2253 题意 给出青蛙A,B和若干石头的坐标,现在青蛙A要跳到青蛙B所在的石头上,求出所有路径中最远那一跳的最小值. 思路 Floyd算 ...

  9. POJ2253:Frogger(改造Dijkstra)

    Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 64864   Accepted: 20127 题目链接:ht ...

  10. POJ2253 Frogger —— 最短路变形

    题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

随机推荐

  1. Splash resource_timeout 属性

    resource_timeout属性用于设置加载的超时时间,单位是秒,如果设置为 0 代表不检测超时,如下,设置超时时间为 0.1 秒: function main(splash) splash.re ...

  2. 关于OSG+QT+VS版本的问题

    CMake3.10.0 Qt5.11.0安装包只有VS2017_64版本,没有VS2017的32位版本,有VS2015的32位版本 Qt5.11.0+osg3.4在CMake的时候,会出现 CMake ...

  3. (原)一句mpAudioPolicy->get_input引发的血案

    今天分析Android的Audio系统时,对mpAudioPolicy->get_input进行了分析,没想到这一句话的背后如此复杂,简直是一句话引出的血案啊! 分析结果如下:(关于排版:各个变 ...

  4. Android学习之蓝牙操作

    BluetoothAdapter 用法 蓝牙运行原理:通过BluetoothAdapter 蓝牙适配器处理任务,如果蓝牙被启动之后,系统会自动去搜索其它设备,如果匹配到附近的设备就发送一个广播,Bro ...

  5. springbatch---->springbatch的使用(五)

    这里我们介绍一个从数据库读取数据并写入到文件中的案例.如果能真心爱上一个人,那么不管对方是何等恶劣,哪怕对方并不爱自己,人生也至少不会是地狱,就算多少有点黯淡. 读取数据库数据 一.定义一个读写的jo ...

  6. 【规范】alibaba编码规范阅读

    一.编程规范 (一)命名规范 1.代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 2.代码中的命名严禁使用评语与英文混合的方式,更不允许直接使用中文的方式 3.类名使用Uppe ...

  7. Android.mk(3) 宏

    https://www.jianshu.com/p/7c20b299ee63 传统上我们一直称这种东西为makefile中的变量,其实本质上就是一个宏,只是做的是字符串替换.我们何如就把它叫做宏呢. ...

  8. LeetCode 45 Jump Game II(按照数组进行移动)

    题目链接:https://leetcode.com/problems/jump-game-ii/?tab=Description   给定一个数组,数组中的数值表示在当前位置能够向前跳动的最大距离. ...

  9. FtpWebRequest UploadFile返回"The underlying connection was closed: The server committed a protocol violation."解决方法

    将FtpWebRequest的KeepAlive设置为true. return Return<Boolean>( new Uri(ftpPath + fileName), request ...

  10. Dockerfile ,ADD详细解读

    一.ADD指令 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中. 其格式是: ADD  源路径  目标路径 如: #test FROM ubunt ...