poj2253 最短路
题意:青蛙跳石头,给出石头的坐标,然后要确定一条路径,使路径上的最大跨度最小,其实也是一道最短路问题,只要将更新条件从总距离最短改为最大跨度最小就行,即从某点到当前点路径上的最大跨度如果小于当前点原本记录下的最大跨度,或当前点还没有被访问过,无最大跨度,那么就更新它,然后以此为条件跑dij或者spfa就行了
dij:
#include<stdio.h>
#include<string.h>
#include<queue>
#include<algorithm>
#include<vector>
#include<math.h>
#define max(a,b) a>b?a:b
using namespace std;
typedef pair<double,int> pii;
const double INF=100000.0; int n; struct point{
int x,y;
}p[]; double g[][],dist[]; struct cmp{
bool operator()(pii a,pii b){
return a.first>b.first;
}
}; void dij(int s,int p){
int i;
for(i=;i<=n;i++){
dist[i]=INF;
}
dist[s]=;
priority_queue<pii,vector<pii>,cmp>q;
q.push(make_pair(,s));
while(!q.empty()){
pii u=q.top();
q.pop();
if(u.first>dist[u.second])continue;
for(i=;i<=n;i++){
double j=max(u.first,g[u.second][i]);
if(i!=u.second&&dist[i]>j){
dist[i]=j;
q.push(make_pair(dist[i],i));
}
}
}
printf("%.3lf\n\n",dist[p]);
} int main(){
int c=;
while(scanf("%d",&n)!=EOF&&n!=){
int i,j;
for(i=;i<=n;i++){
scanf("%d%d",&p[i].x,&p[i].y);
for(j=;j<=i;j++){
g[i][j]=g[j][i]=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)*1.0+(p[i].y-p[j].y)*(p[i].y-p[j].y)*1.0);
}
}
printf("Scenario #%d\nFrog Distance = ",++c);
dij(,);
}
return ;
}
dij
spfa:
#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
#define max(a,b) a>b?a:b
const double INF=10000.0;
using namespace std; struct point{
int x,y;
}p[]; double g[][],dist[];
bool vis[];
int n; void spfa(int s,int p){
int i;
for(i=;i<=n;i++){
dist[i]=INF;
}
memset(vis,,sizeof(vis));
dist[s]=;
queue<int>q;
q.push(s);
vis[s]=;
while(!q.empty()){
int u=q.front();
q.pop();
vis[u]=;
for(i=;i<=n;i++){
double j=max(dist[u],g[u][i]);
if(i!=u&&dist[i]>j){
dist[i]=j;
if(!vis[i]){
q.push(i);
vis[i]=;
}
}
}
}
printf("%.3lf\n\n",dist[p]);
} int main(){
int c=;
while(scanf("%d",&n)!=EOF&&n!=){
int i,j;
for(i=;i<=n;i++){
scanf("%d%d",&p[i].x,&p[i].y);
for(j=;j<=i;j++){
g[i][j]=g[j][i]=sqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)*1.0+(p[i].y-p[j].y)*(p[i].y-p[j].y)*1.0);
}
}
printf("Scenario #%d\nFrog Distance = ",++c);
spfa(,);
}
return ;
}
spfa
poj2253 最短路的更多相关文章
- POJ-2253 Frogger---最短路变形&&最大边的最小值
题目链接: https://vjudge.net/problem/POJ-2253 题目大意: 青蛙A想访问青蛙B,必须跳着石头过去,不幸的是,B所在的石头太远了,需要借助其他的石头,求从A到B的路径 ...
- POJ-2253(最短路变形+dijikstra算法+求解所有路径中所有最长边中的一个最小值)
frogger POJ-2253 这题的代码特别像prim求解最小生成树的代码,其实两者本来也很像. 这里的d数组不再维护的起点到该点的最短距离了,而是路径中的最长距离. #include<io ...
- poj2253 最短路 floyd Frogger
Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28825 Accepted: 9359 Descript ...
- poj2253 最短路变形
题目连接:http://poj.org/problem?id=2253 Description Freddy Frog is sitting on a stone in the middle of a ...
- POJ-2253 Frogger(最短路)
https://vjudge.net/problem/POJ-2253 题意 公青蛙想到母青蛙那里去,期间有许多石头,公青蛙可以通过这些石头跳过去.问至少要跳的最大距离,即所有路径上石头间的最大距离的 ...
- POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...
- POJ2253 Frogger —— 最短路变形
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- poj2253 Frogger(最短路变型或者最小生成树)
/* 题意:就是源点到终点有多条的路径,每一条路径中都有一段最大的距离! 求这些路径中最大距离的最小值! Dijkstra, Floyd, spfa都是可以的!只不过是将松弛的条件变一下就行了! 想了 ...
- POJ2253 Frogger(最短路)
题目链接. 题意: 从0号点,到1号点,找一条能通过的路,使得这条路中的最大的边,比其它所有可能的路中的边都小. 分析: 这题就是按着dijkstra写,写着写着觉得像是prim了. 其中d[n]表示 ...
随机推荐
- Unity2017烘焙参数设置
- byte[]数组与十六进制字符串与字符串的互相转换 ——转载
https://www.cnblogs.com/lelehellow/p/6369631.html
- English trip -- VC(情景课)4 C My feet hurt 我脚痛
xu言: You're the best... Grammar focus 语法点: eye eyes hand hands foot feet tooth teeth arm arms leg ...
- LeetCode--104--二叉树的最大深度
问题描述: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null, ...
- php--------使用 isset()判断字符串长度速度比strlen()更快
isset()速度为什么比strlen()更快呢? strlen()函数函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度.但 ...
- 『PyTorch』第一弹_静动态图构建if逻辑对比
对比TensorFlow和Pytorch的动静态图构建上的差异 静态图框架设计好了不能够修改,且定义静态图时需要使用新的特殊语法,这也意味着图设定时无法使用if.while.for-loop等结构,而 ...
- python-day7--%s与%d的使用,python2中的input及raw_input
#coding:utf-8 #utf-8格式打开#%s %d# name='egon'# age=18# print('my name is',name)# print('my name is my ...
- thinkphp条件查询
1.这是我在做项目的时候编写的: $profit = M('shipping_types',' ','DB_PROFIT');//没有表前缀,在M函数的第二个参数就为空. //条件$field = a ...
- 追加XML
追加有两种情况,这个文档可能存在,也可能不存在 XmlDocument doc = new XmlDocument();XmlElement books; //将books声明在外边这样后面的代码才可 ...
- [Leetcode] Unique binary search trees 唯一二叉搜索树
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...