poj2253Frogger(dijkstra求最小边权问题)
来源:互联网 发布:巨人网络 借壳猜想 编辑:程序博客网 时间:2024/06/02 03:55
题意:输入n表示河中有n个石头,接下来n行表示这n个石头的坐标,第一个坐标是青蛙1的坐标,第二个是青蛙2的坐标,从1号点,到2号点,找一条能通过的路,使得这条路中的最大的边,比其它所有可能的路中的最大边都小,其中每一个石头可以跳向任意一个石头。
答题思路:
首先将所有与1号点相连的点的编号及两者边权值push到优先队列,每一次top一个最小边权值的点,若该点就是2号点,则其对应边权值即为1到2的所有路中边权值最小的一条,
那如果这个点不是2号点呢?没关系,把该点(假设是3号)和与其相连的点松弛,即将3号和与其相连的点(如4号点)的边权(距离)与1号点到3号点的最小边权比较,若3号点和与4号点的边权比1号点到3号点的最小边权小,则1号点到4号点的最小边权等于1号点到3号点的最小边权,否则1号到4号的最小边权等于3号到4号的边权;如此一直找,知道top出的点为2号点就结束。点击打开链接
#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>using namespace std;struct node{double x,y;double distance;int num;node(double a=0,double b=0,double c=0,int d=0){x=a;y=b;distance=c;num=d;}bool operator <(const node &p)const{return distance>p.distance;}};node p[210];priority_queue<node>q;double dis(double a1,double b1,double a2,double b2){return sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));}int main(){int i,j,v=1,n,vis[210];while(scanf("%d",&n)&&n){memset(vis,0,sizeof(vis));while(!q.empty())q.pop();vis[0]=1;for(i=0;i<n;i++){scanf("%lf%lf",&p[i].x,&p[i].y);if(i>0)q.push(node(0,0,dis(p[0].x,p[0].y,p[i].x,p[i].y),i));}printf("Scenario #%d\n",v++);while(!q.empty()){node temp=q.top();q.pop();if(temp.num==1){ printf("Frog Distance = %.3lf\n\n",temp.distance); break;}vis[temp.num]=1;for(i=0;i<n;i++){if(vis[i]==0){if(temp.distance<dis(p[temp.num].x,p[temp.num].y,p[i].x,p[i].y))q.push(node(dis(p[temp.num].x,p[temp.num].y,p[i].x,p[i].y),i));else q.push(node(0,0,temp.distance,i));}}}}}
0 0
- poj2253Frogger(dijkstra求最小边权问题)
- POJ2253Frogger(最短路)
- 图之Dijkstra算法、Floyd算法(最小路径问题)
- HDU1301 最小生成树 + Prim +(Prim求最小生成树与Dijkstra求最短路的区别) (如此题不要误解题意为用Dijkstra!)
- 最小飞机换乘(Dijkstra)
- 迷宫问题求最小路径
- uva 10806 - Dijkstra, Dijkstra.(最小费用流)
- (beginer) 最小费用最大流 UVA 10806 - Dijkstra, Dijkstra.
- uva 10806 Dijkstra, Dijkstra.(最小费用最大流)
- uva 10806 Dijkstra, Dijkstra. (最小费最大流)
- Uva 10806 Dijkstra,Dijkstra(最小费用流)
- LeetCode -- Triangle 路径求最小和( 动态规划问题)
- poj2253Frogger(弗洛伊德)
- poj2253Frogger【prim】
- 51nod 1459 迷宫问题 (Dijkstra或SPFA求最短路)
- hdu 3790 最短路径问题 【双权值最短路(相同最小距离,求最小花费)】
- poj 3522(求最小生成树,使得最边和最小边差最小)
- Poj 3255(Dijkstra求次短路)
- WampServer下修改和重置MySQL密码
- scikit-learn交叉验证Cross Validation and Grid Search
- javascript中的可变参数
- android ImageView 显示本地图片
- 添加背景音乐
- poj2253Frogger(dijkstra求最小边权问题)
- Exception in thread "main" java.lang.Error: Unresolved compilation problem:
- socket的API函数总结
- [总结]视音频编解码技术零基础学习方法
- python 获取网络图片并下载到本地(由网络源码改编)
- Tinyftpd 1.0 更新,C 实现 Linux FTP 服务器
- [leetcode] 26. Remove Duplicates from Sorted Array
- Spring Boot 1.4.0 Release Notes 更新日志-02
- ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)