Frogger--poj2253
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的更多相关文章
- (最短路 Floyd diskstra prim)Frogger --POJ--2253
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- POJ-2253(最短路变形+dijikstra算法+求解所有路径中所有最长边中的一个最小值)
frogger POJ-2253 这题的代码特别像prim求解最小生成树的代码,其实两者本来也很像. 这里的d数组不再维护的起点到该点的最短距离了,而是路径中的最长距离. #include<io ...
- kuangbin 最短路集合
Til the Cows Come Home poj-2387 #include<iostream> #include<cstdio> #include<algorith ...
- POJ2253 Frogger
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34865 Accepted: 11192 Descrip ...
- poj2253 最短路 floyd Frogger
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28825 Accepted: 9359 Descript ...
- POJ2253——Frogger(Floyd变形)
Frogger DescriptionFreddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fi ...
- POJ-2253 Frogger(最短路)
https://vjudge.net/problem/POJ-2253 题意 公青蛙想到母青蛙那里去,期间有许多石头,公青蛙可以通过这些石头跳过去.问至少要跳的最大距离,即所有路径上石头间的最大距离的 ...
- poj2253 Frogger(Floyd)
题目链接 http://poj.org/problem?id=2253 题意 给出青蛙A,B和若干石头的坐标,现在青蛙A要跳到青蛙B所在的石头上,求出所有路径中最远那一跳的最小值. 思路 Floyd算 ...
- POJ2253:Frogger(改造Dijkstra)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 64864 Accepted: 20127 题目链接:ht ...
- POJ2253 Frogger —— 最短路变形
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
随机推荐
- linux-nohup后台运行
先说一下linux重定向: 0.1和2分别表示标准输入.标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出. 在一般使用时,默认的是标准输出,既1.当我们需要特殊用途时,可以使用其他标 ...
- ARM入门最好的文章
一 首先说说arm的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位.广义的嵌入式无非几种:传统的什么51.avr.pic称做嵌入式微控制器:arm是嵌入式微处理器 ...
- lua中的字符串操作(模式匹配)
(一). 模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmat ...
- windows下nodejs与coffeeScript环境搭建
[本文档摘抄自网上资料] 安装NodeJS和CoffeeScript方法 首先安装Node(因为nodeJs是服务器端javascript运行环境),到http://nodejs.org/下载对应格式 ...
- WinDBG 技巧:列出模块(DLL/EXE)里面所有的符号(symbol)
想对某个函数下断点,但是记不清楚的函数具体的名字,这个时侯可以使用x命令来列举所有的符号. 命令格式为: x [选项] 模块名字!符号匹配表达式 这里的符号匹配表达式类似dos的文件名匹配表达式,可以 ...
- 【转载】.NET 开发者必备的工具箱
本文作者Spencer是一名专注于ASP.NET和C#的程序员,他列举了平时工作.在家所使用的大部分开发工具,其中大部分工具都是集中于开发,当然也有一些其它用途的,比如图片处理.文件压缩等. 如果你是 ...
- 游戏服务器学习笔记 3———— firefly 的代码结构,逻辑
注:以下所有代码都是拿暗黑来举例,由于本人能力有限很多地方还没有看透彻,所以建议大家只是参考.有不对的地方非常欢迎指正. 一.结构 系统启动命令是,python statmaster.py,启 ...
- 【线程】Thread中的join介绍
因为sleep.wait.join等阻塞,可以使用interrupted exception异常唤醒. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行 ...
- vue案例 - 使用vue实现自定义多选与单选的答题功能
4月底立得flag,五月底插上小旗,结果拖到六月底七月初才来执行.说什么工作忙都是借口,就是睡的比猪早,起的比猪晚. 本来实现多选单选这个功能,vue组件中在表单方面提供了一个v-model指令,非常 ...
- Android手机端抓包方法
抓包准备 1. Android手机需要先获得root权限.一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得).在终端模拟器界面输入su并回车,若报错则说明未root, ...