ZOJ 1942
来源:互联网 发布:猪八戒淘宝刷流量 编辑:程序博客网 时间:2024/05/18 03:58
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1942
类似最短路算法,但不是求最短路
题意:给你一些石头的坐标,求能从起点到终点的所有路径中,最大的一次跳跃中的最小值
即:每条从起点到终点的路径中,都有一次跳跃是最大的,求的是所有路径中最大跳跃的最小值
#include<stdio.h>#include<string.h>#include<math.h>#define M 250#define oo 0xfffffffint n;bool v[M];int dis[M];//保存从起点跳到任意点之间所有路径最大的一次跳跃长度的最小值//求最短路则保存的是起点到任意点的最短距离 int que[M*M];int Dis[M][M];//任意两点间的距离 struct point{int x;int y;}po[M];int getlen(int i,int j){return (po[i].x-po[j].x)*(po[i].x-po[j].x)+(po[i].y-po[j].y)*(po[i].y-po[j].y);}int max(int a,int b){if(a>b) return a;return b;}void SPFA(){int L=0,R=0,i,p;memset(v,false,sizeof(v));for(i=1;i<=n;i++)dis[i]=oo;dis[1]=0;v[1]=true;que[R++]=1;while(L<R){p=que[L++];v[p]=false;for(i=1;i<=n;i++){int temp=max(dis[p],Dis[p][i]);if(dis[i]>temp){dis[i]=temp;if(!v[i]){que[R++]=i;v[i]=true;}}}}}int main(){int i,j;int cas=1;while(scanf("%d",&n)&&n){for(i=1;i<=n;i++)scanf("%d%d",&po[i].x,&po[i].y);for(i=1;i<=n;i++)for(j=1;j<=i;j++)Dis[i][j]=Dis[j][i]=getlen(i,j);SPFA();printf("Scenario #%d\n",cas++);printf("Frog Distance = %.3lf\n\n",sqrt(dis[2]));}return 0;}
这题同样可以用类似最小生成树算法,下面是代码:
#include<stdio.h>#include<string.h>#include<math.h>#define M 250#define oo 0xfffffffint n;bool v[M];int MIN[M];int dis[M][M];struct point{int x,y;}po[M];int Getlen(int i,int j){return (po[i].x-po[j].x)*(po[i].x-po[j].x)+(po[i].y-po[j].y)*(po[i].y-po[j].y);}int max(int a,int b){if(a>b) return a;return b;}int Dijstra(){int i,j,p;int min;memset(v,false,sizeof(v));for(i=1;i<=n;i++)MIN[i]=dis[1][i];v[1]=true;for(i=1;i<n;i++){min=oo;for(j=1;j<=n;j++){if(!v[j]&&MIN[j]<min){min=MIN[j];p=j;}}if(p==2)return min;v[p]=true;for(j=1;j<=n;j++){if(!v[j]&&MIN[j]>max(MIN[p],dis[p][j]))MIN[j]=max(MIN[p],dis[p][j]);}}}int main(){int i,j;int cas=1;int ans;while(scanf("%d",&n)&&n){for(i=1;i<=n;i++)scanf("%d%d",&po[i].x,&po[i].y);for(i=1;i<=n;i++)for(j=1;j<=i;j++)dis[i][j]=dis[j][i]=Getlen(i,j);ans= Dijstra();printf("Scenario #%d\n",cas++);printf("Frog Distance = %.3lf\n\n",sqrt(ans));}return 0;}
- ZOJ 1942
- ZOJ 1942
- ZOJ-1942
- zoj 1942 Frogger
- poj 2253&zoj 1942
- zoj 1942 Frogger
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- Visual Studio 2010 ALM与TFS视频学习资料
- 一个十人开发团队的人员安排
- 字符集和字符编码[订正]
- 八大排序算法总结
- Android获取其他包的Context实例,然后调用它的方法
- ZOJ 1942
- MediaErrors.h定义了多媒体格式的错误码,如常见的-1007错误
- [020] Android模拟器访问本地Web应用
- 使用ifstream 和 ofstream 你必须注意加iostream头文件外还要加 fstream
- Java反射经典实例 Java Reflection Cookbook
- 把阿拉伯数字的金额转换为中文大写数字
- linux 多线程资料 虽然老 但是灰常不错
- 如何在oracle中导入导出dmp数据库文件
- 随机数产生问题整理