POJ2502 subway(spfa)
来源:互联网 发布:npm 淘宝镜像安装教程 编辑:程序博客网 时间:2024/05/29 10:05
题意:
给出多条地铁的路线以及人和车的速度,求起点到终点的最短时间(可以在任意站点上下车)。
思路:
关键在于人和车速度不同的处理,因为人走路比地铁慢,所以在输入地铁站点的时候,就可计算出每两个站点之间花费的时间,不会影响到后面的松弛操作。
之后spfa就可以求出答案。
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<queue>#include<cstring>using namespace std;const double pr=10.0*1000/60;const double cr=40.0*1000/60;#define mx 100000000int vis[202],cen;double d[202],ma[202][202];struct aa{int x,y;}cor[202];double com(int x1,int y1,int x2,int y2){double te=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);return sqrt(te);}void mem(){memset(vis,0,sizeof(vis));for(int i=1;i<202;i++) d[i]=mx;for(int i=1;i<202;i++)for(int j=1;j<202;j++) ma[i][j]=mx;}void spfa(){queue<int>q;q.push(1);d[1]=0;while(!q.empty()){int x=q.front();q.pop();vis[x]=0;for(int i=1;i<cen;i++){if(i==x) continue;double t= com(cor[x].x,cor[x].y,cor[i].x,cor[i].y)/pr;t=min(t,ma[x][i]);if(d[i]>d[x]+t){d[i]=d[x]+t;if(!vis[i]){vis[i]=1;q.push(i); }}}}}int main(){scanf("%d%d%d%d",&cor[1].x,&cor[1].y,&cor[2].x,&cor[2].y);cen=3;mem();int a,b,ta,tb;while(scanf("%d%d",&a,&b)!=EOF){cor[cen].x=a;cor[cen].y=b;cen++;while(scanf("%d%d",&a,&b),a!=-1&b!=-1){cor[cen].x=a;cor[cen].y=b;ma[cen][cen-1]=ma[cen-1][cen]=com(a,b,cor[cen-1].x,cor[cen-1].y)/cr;cen++;}}spfa();printf("%d\n",(int)(d[2]+0.5));return 0;}
阅读全文
0 0
- POJ2502 subway(spfa)
- 【最短路】POJ2502 SUBWAY (spfa)
- poj2502 - Subway
- poj2502 SubWay
- Poj2502 Subway
- poj2502 Subway
- POJ2502 subway
- POJ2502---Subway (最短路:spfa or floyed)
- poj2502 Subway最短路
- POJ2502 Subway flody
- POJ2502——Subway
- POJ2502 Subway(Floyd)
- POJ2502 Subway 最短路
- poj2502 subway dijkstra
- POJ2502 Subway(最短路径)
- poj2502(SPFA+建图)
- POJ2502 Subway -DIJKSTRA最短路练习
- POJ2502 Subway(最短路Floyed)
- 硬币问题(经典dp)
- C++Lambda表达式详解
- POJ1182食物链
- 安装mysql
- 【hpu oj 1019 985的买饮料难题 [数学、DP]】
- POJ2502 subway(spfa)
- <8>——String to Integer (atoi)
- CodeForces 118 A.String Task(水~)
- codeforces815aKarenAndGames解题报告
- C++的Lambda表达式
- 详解C++11的Lambda表达式
- Intellij Idea 创建Web项目入门(非Maven项目)
- cmd MySQL登录
- scala之映射和元祖