poj 2502 Subway(dijkstra 最短路)
来源:互联网 发布:淘宝直通车选词2016 编辑:程序博客网 时间:2024/05/01 18:58
大概题意是学生上学可以坐地铁可以步行,只要走到地铁站就立马能上车做地铁...先给出学生的家和学校的坐标...然后下面都是以-1 -1结尾的一串二维坐标,代表一条地铁线,不同地铁线不能建边,只能与相邻地铁站建边...地铁速度和步行速度给出,问到学校的最短时间是多少..
以到达时间为边权建边...步行所有点可以建边,地铁的话一条地铁线有n个点只能建立n-1条边..相邻建边..然后计算一下家到学校的最短路即可...注意输出的时候要四舍五入...用%.0f输出就是四舍五入了...还有就是计算过程尽量都用double...刚刚样例一直是19..调试了半天才看出来哪里错了...就是类型没对...
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<queue>#include<algorithm>#include<iostream>using namespace std;#define M 1000009#define inf 1<<30int used[1000];double dis[1000],map[1000][1000];struct node{ int x,y;} s[1000];int n;double dijkstra(){ for(int i=1; i<=n; i++) dis[i]=inf; dis[1]=0; memset(used,0,sizeof(used)); for(int i=1; i<n; i++) { double mini=inf;//此处注意不要写成int类型 int t=-1; for(int j=1; j<=n; j++) { if(!used[j]&&dis[j]<mini) mini=dis[t=j]; } if(mini==inf) break; used[t]=1; for(int j=1; j<=n; j++) { if(!used[j]&&dis[j]>mini+map[t][j]) dis[j]=mini+map[t][j]; } } return dis[2];}double getdis(node a,node b){ return sqrt(0.0+(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int main(){ double v1=10000.0/60;//步行速度转为分钟 double v2=40000.0/60;//地铁速度转为分钟 scanf("%d %d %d %d",&s[1].x,&s[1].y,&s[2].x,&s[2].y); n=3; int k=3; int x,y; for(int i=1; i<=400; i++) { for(int j=1; j<=i; j++) map[i][j]=map[j][i]=i==j?0:inf; } while(scanf("%d %d",&x,&y)!=EOF)//地铁建边 { if(x==-1&&y==-1)//一条地铁线搞定了..下一条开始... { k=n; continue; } s[n].x=x; s[n].y=y; if(n!=k)//不是本地铁线的首个地铁站的话可以与相邻地铁站建边 map[n][n-1]=map[n-1][n]=min(map[n][n-1],getdis(s[n],s[n-1])/v2); n++; } for(int i=1; i<=n; i++) //步行建边 { for(int j=1; j<=n; j++) map[i][j]=min(map[i][j],getdis(s[i],s[j])/v1); } double ans=dijkstra(); printf("%.0f\n",ans); return 0;}
0 0
- poj 2502 Subway(dijkstra 最短路)
- POJ-2502 Subway(最短路 Dijkstra)
- POJ 2502 Subway (Dijkstra 最短路+建图)
- poj 2502 Subway (最短路 Dijksta)
- 【POJ 2502】Subway(最短路dij)
- POJ 2502 Subway ACM解题报告 (dijkstra求最短路)
- POJ 2502 Subway(最短路)
- poj 2502 subway (最短路)
- [POJ 2502]Subway[最短路]
- poj 2502最短路subway
- POJ 2502 Subway 最短路 Floyd
- Dijkstra-POJ-2502-Subway
- poj Subway(dijkstra)
- Subway(最短路)
- POJ2502 Subway -DIJKSTRA最短路练习
- POJ 2502 - Subway(单源最短路)
- POJ 2502 Subway 单源点最短路模板
- POJ 2502 Subway(将各种数据转化成图+最短路+迪杰斯特拉算法)
- C++ biteset
- 【SICP练习】8 练习1.12
- jdk装配后为什么要配置Path环境变量
- Visual Studio, GCC, Clang, Intel 对 C++11 特性的支持一览表
- 个人新博客
- poj 2502 Subway(dijkstra 最短路)
- DBA的新领域:调试Oracle(进阶篇)
- Latex首行缩进&段落间距
- Apache POI实现excel读取
- 自定义Dialog
- Android编程规范
- 转:java socket通信(读取URL)
- Android自定义对话框(Dialog)位置,大小
- SDUTOJ 2773 小P的故事——神奇的Dota 枚举或背包或搜索