Frogger(最短路)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 31854 | Accepted: 10262 |
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
Output
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 大意:
从A到B有多条路径,先取每条路径的最大值,然后再求出它们的最小值。
比如三条路径,1 3 4;2 5,1 2 1;最大值分别为4,5,2,最小值就是2 使用DIjkstra算法的思路,lowcost[]此时不再是最短路径,而是从起点到结点i的所有路径的最大边中的最小值,算法中维护s集合,从未更新的结点中取出最小节点,不断向外进行扩展。
扩展方法:if(max(lowcost[u],w[u][v])<lowcost[v])
lowcost[v]=max(lowcost[u],w[u][v])<lowcost[v];
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define Max 300+10
#define MMax 0x3f3f3f3f
struct point
{
int x,y;
};
double w[Max][Max];
double lowcost[Max];
bool vis[Max];
point p[Max];
int n;
double dis(point a,point b)
{
return sqrt((double)(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
void Dijkstra(int s)
{
for(int i=;i<n;i++){
lowcost[i]=MMax; /*memset按照字节来赋值,但是int是四个字节*/
vis[i]=;
}
lowcost[]=;
while()
{
int u=-,v;
int i,j;
double Min=MMax;
for(v=;v<n;v++)
if(!vis[v]&&(u==-||lowcost[v]<lowcost[u]))
{
u=v;
}
if(u==-) break;
vis[u]=;
for(v=;v<n;v++)
if(!vis[v]&&max(lowcost[u],w[u][v])<lowcost[v])
lowcost[v]=max(lowcost[u],w[u][v]);
}
return;
}
int main()
{
int i,j,k,count=;
//freopen("in.txt","r",stdin);
while(cin>>n&&n)
{
memset(w,,sizeof());
for(i=;i<n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
for(i=;i<n-;i++)
for(j=i+;j<n;j++)
w[i][j]=w[j][i]=dis(p[i],p[j]);
Dijkstra();
printf("Scenario #%d\nFrog Distance = %0.3lf\n\n",++count,lowcost[]);
}
}
Frogger(最短路)的更多相关文章
- POJ2253 Frogger —— 最短路变形
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- POJ 2253 Frogger (最短路)
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28333 Accepted: 9208 Descript ...
- B - Frogger 最短路变形('最长路'求'最短路','最短路'求'最长路')
http://poj.org/problem?id=2253 题目大意: 有一只可怜没人爱的小青蛙,打算去找他的女神青蛙姐姐,但是池塘水路不能走,所以只能通过蹦跶的形式到达目的地,问你从小青蛙到青蛙姐 ...
- POJ 2253 Frogger ( 最短路变形 || 最小生成树 )
题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...
- POJ 2253 Frogger -- 最短路变形
这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...
- POJ 2253 Frogger 最短路 难度:0
http://poj.org/problem?id=2253 #include <iostream> #include <queue> #include <cmath&g ...
- poj 2253 Frogger(最短路 floyd)
题目:http://poj.org/problem?id=2253 题意:给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通路的元 ...
- POJ2253 frogger 最短路 floyd
#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#inc ...
- 最短路(Floyd_Warshall) POJ 2253 Frogger
题目传送门 /* 最短路:Floyd算法模板题 */ #include <cstdio> #include <iostream> #include <algorithm& ...
随机推荐
- Linux中重命名文件
linux下重命名文件有两种方式: 1.较简单的处理命令:mv mv 原文件名 新文件名 如:mv myFile newName 将MyFile重命名为newName. 2.linux提供了一个重命名 ...
- [POJ] 3468 A Simple Problem with Integers [线段树区间更新求和]
A Simple Problem with Integers Description You have N integers, A1, A2, ... , AN. You need to deal ...
- 开心菜鸟学习系列学习笔记------------nodejs util公共函数
global 在最外层定义的变量: 全局对象的属性: 隐式定义的变量(未定义直接赋值的变量). 一.process process 是一个全局变量,即 global 对象的属性 ...
- PERL 实现微信登录
get 请求: https://login.weixin.qq.com/jslogin? appid=wx782c26e4c19acffb &redirect_uri=https%3A%2F% ...
- Spring MVC Controller 单元测试
简介 Controller层的单元测试可以使得应用的可靠性得到提升,虽然这使得开发的时间有所增加,有得必失,这里我认为得到的比失去的多很多. Sping MVC3.2版本之后的单元测试方法有所变化,随 ...
- bzoj3721 [PA2014 Final] Bazarek
Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数 ...
- bzoj3431 [Usaco2014 Jan]Bessie Slows Down
Description [Brian Dean, 2014] Bessie the cow is competing in a cross-country skiing event at the wi ...
- libeXosip2(1-3) -- How-To send or update registrations.
How-To send or update registrations. The eXtented eXosip stack Initiate a registration To start a re ...
- Jquery 概念性内容编辑器
概念性jQuery内容编辑器,这是一款非常有特色的jQuery编辑器,该编辑器支持文字.列表.视频.引用等功能,是一款小巧简洁,富有个性化的jQuery内容编辑器插件. 代码: <!doct ...
- POJ Oulipo (KMP)
题目大意 : 在一个字符串中找出目标单词的个数 代码: #include<iostream> #include<cstdio> #include<cstdlib> ...