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 ...
随机推荐
- Spring事务超时、回滚的相关说明
事务超时: @Transactional(timeout = 60) 如果用这个注解描述一个方法的话,线程已经跑到方法里面,如果已经过去60秒了还没跑完这个方法并且线程在这个方法中的后面还有涉及到对数 ...
- Splash autoload() 方法
autoload() 方法可以设置每个页面访问时自动加载的对象,比如自动加载 JavaScript 代码,自动加载 Ajax 代码等等 注意此方法只负责加载 JavaScript/Ajax 代码,不执 ...
- [转]redis的三种启动方式
来源:https://www.cnblogs.com/pqchao/p/6549510.html redis的启动方式1.直接启动 进入redis根目录,执行命令: #加上‘&’号使red ...
- drizzleDumper的原理分析和使用说明
https://blog.csdn.net/qq1084283172/article/details/53561622 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- 使用API函数EnumWindows()枚举顶层窗口
http://simpleease.blog.163.com/blog/static/1596085820052770290/ 要枚举Windows当前所有打开的顶层窗口,可使用Windows A ...
- 安装win7到移动硬盘
jpg改rar http://www.360doc.com/content/16/0816/10/19373891_583556875.shtml
- Qt——添加动作及对话框
1. 添加动作 教程:https://www.devbean.net/2012/08/qt-study-road-2-action/ 运行教程中的第一个程序,报错如下: 原因:没有将main.cpp改 ...
- Git学习之msysGit环境支持
============================== msysGit中Shell环境的中文支持 ============================== 1 中文录入的问题 默认的Shel ...
- 【linux系列】yum安装报错 no mirrors to try
执行以下命令去重新生成缓存 yum clean all yum makecache 更换源重新下载repo文件 重新生成缓存
- jQuery队列(一)
jQuery的队列依赖缓存机制事件,它同时是animate的基础. 它不像事件机制.缓存机制.回调机制一样有自己的命名空间,由于比较简单,所以直接挂在到$和jQuery对象上. 它提供的基础方法有: ...