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. PC 商城扫描二维码登录

    需求分析: 扫码入口,在pc登录首页新增二维码登录入口 点击扫码入口显示二维码 二维码有效时间为一分钟 超时后显示二维码失效,点击刷新后生成新的二维码 在app端用户登录并扫码后,点击确认登录,进行跳 ...

  2. Lua脚本和C++交互(一)

    现在,越来越多的C++服务器和客户端融入了脚本的支持,尤其在网游领域,脚本语言已经渗透到了方方面面,比如你可以在你的客户端增加一个脚本,这个脚本将会帮你在界面上显示新的数据,亦或帮你完成某些任务,亦或 ...

  3. Python正则表达式 学习笔记

    python第一个正则表达式 1. import re : python正则表达式模块 2. 第一个正则表达式 re.compile(r'imooc') pattern.match('imooc py ...

  4. eclipse项目中.classpath文件详解

    1 前言 在使用eclipse或者myeclipse进行java项目开发的时候,每个project(工程)下面都会有一个.classpath文件,那么这个文件究竟有什么作用? 2 作用 .classp ...

  5. 【存储过程】用SQL语句获得一个存储过程返回的表

    定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...

  6. 【angularjs基础】ng-repeat嵌套循环报错angular.min.js:89 Error: [ngRepeat:dupes]

    再写嵌套循环的时候,提示一个错误 angular.min.js: Error: [ngRepeat:dupes] 代码如下 <table class="GridViewTable mt ...

  7. 【MD5加密】MD5加密编码的坑

    MD5 MD5即Message-Digest Algorithm (信息-摘要算法5),用于确保信息传输完整一致. 是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5 ...

  8. Qt编写网络中转服务器(开源)

    需求1:手机端或者其他端可以对设备进行回控,并查看设备各种运行状态,接收报警推送等.2:同时支持在局域网.广域网.互联网访问,尤其是互联网访问.3:权限控制,给定账号控制授权的设备,并自动拉取设备信息 ...

  9. 【Web前端开发最佳实践系列】前端代码推荐和建议

    一.常用的前端文件的组织结构: 1.js (放置JavaScript代码) lib(放置框架JavaScript文件) custom.js 2.css(放置CSS样式代码) lib(放置框架CSS文件 ...

  10. Android JNI与多线程

    Java通过JNI调用本地C++代码是在同一个线程中的同步调用. JNI中如果新建的线程调用java的代码,那么java代码是运行在JNI线程中的:但是,如果调用UI相关的代码时需要与java主线程通 ...