POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
题目链接:
http://poj.org/problem?id=2253
Description
Unfortunately Fiona's stone is out of his jump range. Therefore
Freddy considers to use other stones as intermediate stops and reach her
by a sequence of several small jumps.
To execute a given sequence of jumps, a frog's jump range obviously
must be at least as long as the longest jump occuring in the sequence.
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.
You are given the coordinates of Freddy's stone, Fiona's stone and
all other stones in the lake. Your job is to compute the frog distance
between Freddy's and Fiona's stone.
Input
input will contain one or more test cases. The first line of each test
case will contain the number of stones n (2<=n<=200). The next n
lines each contain two integers xi,yi (0 <= xi,yi <= 1000)
representing the coordinates of stone #i. Stone #1 is Freddy's stone,
stone #2 is Fiona's stone, the other n-2 stones are unoccupied. There's a
blank line following each test case. Input is terminated by a value of
zero (0) for n.
Output
each test case, print a line saying "Scenario #x" and a line saying
"Frog Distance = y" where x is replaced by the test case number (they
are numbered from 1) and y is replaced by the appropriate real number,
printed to three decimals. Put a blank line after each test case, even
after the last one.
Sample Input
2
0 0
3 4 3
17 4
19 4
18 5 0
Sample Output
Scenario #1
Frog Distance = 5.000 Scenario #2
Frog Distance = 1.414
题意描述:
输入几个顶点的坐标
计算并输出从一号顶点到二号顶点所有最短路径中的最长距离
解题思路:
首先求出最短路径,Dijkstra算法不变,变化的是dis数组中存储的是所走的最短路径中最短的一段距离,在更新dis数组是加上判断条件即可。
属于最短路径最大权值,题目很经典,另还需了解
最短路径双重最小权值请参考:http://www.cnblogs.com/wenzhixin/p/7405802.html
最长路径最小权值请参考:http://www.cnblogs.com/wenzhixin/p/7336948.html
AC代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
struct Node
{
double x,y;
};
struct Node node[];
double e[][],dis[];
int main()
{
int n,book[],i,j,u,v,t=;
double x,y,inf=,mins;
while(scanf("%d",&n),n != )
{
for(i=;i<=n;i++)
for(j=;j<=n;j++)
e[i][j]=inf;
for(i=;i<=n;i++)
scanf("%lf%lf",&node[i].x,&node[i].y);
for(i=;i<=n;i++)
{
for(j=;j<=n;j++)
{
if(i != j)
e[i][j]=sqrt(fabs(node[i].x-node[j].x)*fabs(node[i].x-node[j].x)
+fabs(node[i].y-node[j].y)*fabs(node[i].y-node[j].y));
}
} for(i=;i<=n;i++)
dis[i]=e[][i];
memset(book,,sizeof(book));
book[]=;
for(i=;i<=n-;i++)
{
mins=inf;
for(j=;j<=n;j++)
{
if(!book[j] && dis[j] < mins)
{
mins=dis[j];
u=j;
}
}
book[u]=;
for(v=;v<=n;v++)
{
if(!book[v] && e[u][v] < inf)
{
if(dis[v] > max(dis[u],e[u][v]))
dis[v]=max(dis[u],e[u][v]);
}
}
}
printf("Scenario #%d\nFrog Distance = %.3lf\n\n",t++,dis[]);
}
return ;
}
使用Floyd算法更为精简
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std; const int inf = ;
const int maxn = ;
struct Node {
double x,y;
}node[]; double e[maxn][maxn]; double dis(Node a, Node b) {
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
} int main()
{
int n,kase = ;
while(scanf("%d", &n) == && n) {
for(int i = ; i <= n ; i++) {
scanf("%lf%lf", &node[i].x, &node[i].y);
} for(int i = ; i <=n; i++) {
for(int j = ; j <= n; j++){
e[i][j] = i == j? : inf;
}
}
for(int i = ; i < n; i++) {
for(int j = i + ; j <= n; j++){
e[i][j] = e[j][i] = dis(node[i], node[j]);
}
} for(int k = ; k <= n; k++) {
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
e[i][j]=min(e[i][j], max(e[i][k],e[k][j]));
}
}
}
printf("Scenario #%d\nFrog Distance = %.3f\n\n", kase++, e[][]);
}
return ;
}
POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)的更多相关文章
- NYOJ 1248 海岛争霸(Dijkstra变形——最短路径最大权值)
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=1248 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比 ...
- poj 2253 Frogger dijkstra算法实现
点击打开链接 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21653 Accepted: 7042 D ...
- POJ 2253 - Frogger - [dijkstra求最短路]
Time Limit: 1000MS Memory Limit: 65536K Description Freddy Frog is sitting on a stone in the middle ...
- POJ. 2253 Frogger (Dijkstra )
POJ. 2253 Frogger (Dijkstra ) 题意分析 首先给出n个点的坐标,其中第一个点的坐标为青蛙1的坐标,第二个点的坐标为青蛙2的坐标.给出的n个点,两两双向互通,求出由1到2可行 ...
- POJ 2253 Frogger(dijkstra 最短路
POJ 2253 Frogger Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fion ...
- POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你 ...
- 最短路(Floyd_Warshall) POJ 2253 Frogger
题目传送门 /* 最短路:Floyd算法模板题 */ #include <cstdio> #include <iostream> #include <algorithm& ...
- POJ 2253 Frogger ,poj3660Cow Contest(判断绝对顺序)(最短路,floyed)
POJ 2253 Frogger题目意思就是求所有路径中最大路径中的最小值. #include<iostream> #include<cstdio> #include<s ...
- POJ 2253 Frogger【最短路变形——路径上最小的最大权】
链接: http://poj.org/problem?id=2253 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
随机推荐
- IT小白学习Discuz!框架(一)
1.Discuz!是什么? 答:(1).Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统. (2).Crossday ...
- mysql 数据表字段修改sql 语句
1 新增字段 alter table bulletin add citycode varchar(6) not null default 0 [after `id`]; # 城市代码 2 修改字段 a ...
- java多线程(七)-线程之间的 协作
对于多线程之间的共享受限资源,我们是通过锁(互斥)的方式来进行保护的,从而避免发生受限资源被多个线程同时访问的问题.那么线程之间既然有互斥,那么也会有协作.线程之间的协作也是必不可少的,比如 盖个商场 ...
- 学习整理与细化(2)——HTML VS XHTML
<html> <head>//文档头 <title>webpage title</title> </head> <body>// ...
- 微信终端开发团队:新年新语言,WCDB Swift
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:sanhuazhang,此文发布在微信终端开发团队的专栏 WCDB 作为微信的终端数据库,从 2017.6 开源至今,共迭代了 5 个版本 ...
- 为什么树莓派不会受到 Spectre 和 Meltdown 攻击
最近爆出来的 Intel CPU 的底层漏洞可谓是影响巨大,过去20年的电脑都可能会受影响.前几天 Raspberry Pi 的官方 Twitter(@Raspberry_Pi) 转推了这篇文章,通过 ...
- Sublime Text3注册码,亲测可用
将以下复制在输入框即可 ,亲测可用 . 不过还是希望大家多多支持正版 . -– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D7 ...
- Spark源码剖析(九):TaskScheduler原理与源码剖析
接着上期内核源码(六)的最后,DAGSchedule会将每个Job划分一系列stage,然后为每个stage创建一批task(数量与partition数量相同),并计算其运行的最佳位置,最后针对这一批 ...
- flex盒模型 详细解析
flex盒模型 详细解析 移动端页面布局,采用盒模型布局,效果很好 /* ============================================================ ...
- 关于css那些常用却有点记不住的属性
虽然说css样式都比较简单,但是某些单词每次都用到还是没记住怎么拼写,都要百度一番,干脆就汇总一下自己经常忘记的这些,也好方便查找. 单行文本溢出: { overflow: hidden; text- ...