POJ2253 Frogger Dijkstra & Floyd
来源:互联网 发布:java byte转char 编辑:程序博客网 时间:2024/05/16 11:24
题目大意:有两只青蛙A,B和n块石头(编号为1到n,青蛙A在1号,青蛙B在2号),已知每个石头的坐标和两只青蛙的坐标,现在让你确定青蛙的forg distance:在青蛙A到青蛙B所在石块的一条路径中,我们在该路径中每两点之间的距离中把最大值拿出来,再在所有A到B的通路中的这些最大值当中,找出最小值输出。
分析:我感觉题意超难理解。。。好吧,我承认我英语太菜。
对于这题呢,Dijkstra算法和Floyd算法都可以,关键在于把保存最短路的那部分改成保存forg distance就行了。
Dijkstra实现代码如下:
#include <cstdio>#include <iostream>#include <cmath>using namespace std;#define MAX 205#define INF 999999999bool s[MAX];double dis[MAX];int n,x[MAX],y[MAX];double dist(int i,int j){ return sqrt((double)(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}void Dijkstra(){ for(int i=1;i<=n;i++) { dis[i]=INF; s[i]=false; } dis[1]=0; s[1]=true; for(int i=1;i<=n;i++) { double tmp=INF; int u=1; for(int j=1;j<=n;j++) if(!s[j]&&tmp>dis[j]) { tmp=dis[j]; u=j; } if(u==2) break; s[u]=true; for(int j=1;j<=n;j++) if(!s[j]&&dis[j]>max(dis[u],dist(u,j))) dis[j]=max(dis[u],dist(u,j)); }}int main(){ int T=1; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); Dijkstra(); printf("Scenario #%d\nFrog Distance = %.3f\n\n",T++,dis[2]); } return 0;}
Floyd实现代码如下:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>using namespace std;#define INF 999999999#define MAX 205double dis[MAX][MAX];int x[MAX],y[MAX];int n;double dist(int i,int j){ return sqrt((double)(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}void floyd(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dis[i][j]=dist(i,j); for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dis[i][j]=min(dis[i][j],max(dis[i][k],dis[k][j]));}int main(){ int T=1; while(scanf("%d",&n) && n) { for(int i=1;i<=n;i++) scanf("%d%d",&x[i],&y[i]); floyd(); printf("Scenario #%d\nFrog Distance = %.3f\n\n",T++,dis[1][2]); } return 0;}
0 0
- POJ2253 Frogger Dijkstra & Floyd
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- POJ2253 Frogger(最短路变形,floyd,Dijkstra,spfa)
- POJ2253 Frogger 【Floyd】
- POJ2253 Frogger (FLOYD)
- poj2253 Frogger 图论,Floyd
- POJ2253 Frogger(Floyd)
- Frogger(poj2253)-floyd变形
- POJ2253 Frogger 【Dijkstra】
- POJ2253《Frogger》方法:Floyd-Wallshall
- POJ2253 Frogger之Floyd解法
- ZOJ1942 POJ2253 Frogger,Dijkstra算法
- POJ2253--Frogger FLOYD【最小树变形】
- POJ2253 Frogger(floyd最短路算法)
- poj2253~Frogger(最短路floyd)
- POJ2253-Frogger(Dijkstra变式)
- POJ-2253 Frogger(Dijkstra)(Floyd)
- POJ2253:Frogger
- Android视频录制命令screenrecord
- 软件架构——你是上帝
- 执行系统命令并且将输出写到指定日志文件的shell脚本(2)
- MIPv6快速切换
- 学习opencv ,图像分割中分水岭算法的感性认识及cvWatershed例子
- POJ2253 Frogger Dijkstra & Floyd
- 步步为营_Android开发课[5]_Service学习
- Android代码中实现WAP方式联网
- [LeetCode]Maximum number of points on a straight line in 2d plane
- C++ enum的使用
- Lock与synchronized
- Opengl学习笔记:(一).Ply文件文件格式和文件读取
- 黑马程序员-Java基础学习(函数)
- Java实现多项式