最短路变形 POJ 2253 Frogger
来源:互联网 发布:linux终端删除~$ 编辑:程序博客网 时间:2024/05/02 01:54
这题也是最短路类的题目
但求的不是从一点到另一点的最短路径,而是求从起点到终点的所有的路径中每条路径上的最大边的最小值,好像有点拗口。。
其实这并没有难多少,只需要把dijstra的松弛过程改一下就可以了
核心代码是
int k = max( d[x] , W[x][y] );
d[y]=min( k,d[y] );
另外这题我的代码在poj上只能用G++交才能通过,C++会WA的
具体细节看代码的注释
另外和这题十分相似但又相反的是POJ 1797 我的上一篇博文也就是我的第一篇博文就是介绍的那个题目,哈哈~~
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#define INF 1e18int W[300][300],d[300];bool vis[300];int node_num,edge_num;using namespace std;struct POINT { int a,b;}po[300];double dist(POINT a,POINT b){return (a.a-b.a)*(a.a-b.a)+(a.b-b.b)*(a.b-b.b);}void read(){int i=0;while(++i<=node_num)cin>>po[i].a>>po[i].b;for(int i=1;i<=node_num;i++)for(int j=1;j<=node_num;j++)W[i][j]=dist(po[i],po[j]);//计算任意2点的距离的平方}void dijstra(){ memset(vis,0,sizeof(vis)); for(int i=1;i<=node_num;i++)d[i]=W[1][i];//初始化青蛙从起点跳到每个点的距离 for(int i=1;i<=node_num;i++) { int x,m=INF; for(int y=1;y<=node_num;y++) if(!vis[y]&&d[y]<=m) m=d[x=y]; vis[x]=1; for(int y=1;y<=node_num;y++) {int k=max(d[x],W[x][y]);//k 是当前能到此处的最大距离d[y]=min(k,d[y]);//选择能到此处的最短距离 } }}int main(){int ii=0;while(cin>>node_num,node_num){read();dijstra();printf("Scenario #%d\nFrog Distance = %.3f\n\n",++ii,sqrt(d[2]));//输出要注意下的}return 0;}
- 最短路变形 POJ 2253 Frogger
- POJ 2253 Frogger -- 最短路变形
- POJ 2253 Frogger(最短路--floyd变形)
- POJ 2253 Frogger(最短路变形)
- POJ -- 2253 -- Frogger (最短路变形)
- POJ 2253 Frogger 最短路-Dijkstra的变形形式
- POJ 2253Frogger(dijk最短路变形)
- POJ 题目2253 Frogger(最短路变形)
- POJ 2253 Frogger(最短路变形,floyd算法)
- [POJ 2253] Frogger [最短路]
- POJ 2253 Frogger 最短路
- poj-2253-Frogger-最短路
- poj 2253 Frogger【最短路】
- POJ 2253 Frogger 最短路
- POJ 2253 Frogger(最短路)
- POJ-----2253---Frogger---最短路
- POJ 2253 Frogger 最短路
- POJ 2253 Frogger (最短路
- RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
- 结构体对齐问题以及强制类型转换问题总结
- 快速MD5计算
- 利用amqplib测试rabbitmq
- 关于XX信息技术有限公司的面试经历
- 最短路变形 POJ 2253 Frogger
- 多线程编程--对pthread_cond_wait()函数的理解
- TextView使用笔记(一)——为TextView添加下划线或者删除线
- apache开启expires
- 第十九天 类加载器
- 光棍的yy之大数加法模板
- 模块""可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86或x64版
- Android之Intent详解
- centos打开Android Studio后出现的错误:adb: error while loading shared libraries: libncurses.so.