POJ 2502 Subway
2015-09-06 23:36
253 查看
题目大意:首先给你两个坐标,一个是你家里的坐标,一个是你学校的坐标,然后接下来有若干条地铁线,每条地铁线上有若干个站点,给出每个站点的坐标,有这些点,这些点当中有距离,这个距离的单位是米,现在告诉你走路是10km/h,做地铁的话是40km/h,问你从家里到学校所花费的最短时间(分钟)
解题思路:这个主要是卡的输入,只要将输入弄好了,构成一张图就好做了,然后需要注意的是,对于地铁线,你从1站到2站的速度是40km/h,但是不代表你从1站到3站的速度是40km/h,你必须经过2站才能到3站,然后我们构图的时候权值保存的是时间多少分钟(可能会有从a到b点有多个分钟,取最小的),这里单位换算也要注意下,然后就是直接模版了
解题思路:这个主要是卡的输入,只要将输入弄好了,构成一张图就好做了,然后需要注意的是,对于地铁线,你从1站到2站的速度是40km/h,但是不代表你从1站到3站的速度是40km/h,你必须经过2站才能到3站,然后我们构图的时候权值保存的是时间多少分钟(可能会有从a到b点有多个分钟,取最小的),这里单位换算也要注意下,然后就是直接模版了
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; #define N 205 const double inf=10000000.0; double w ,d ; int vis ,cnt; struct Node { double u,v; }t ; double get(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } void dij(int s) { int i,j; for(i=0;i<cnt;i++) { d[i]=w[s][i]; } d[s]=0; vis[s]=1; for(i=0;i<cnt;i++) { double now=inf; int k; for(j=0;j<cnt;j++) { if(!vis[j]&&d[j]<now) { now=d[j]; k=j; } } if(now==inf) { break; } vis[k]=1; for(j=0;j<cnt;j++) { if(!vis[j]&&d[j]>d[k]+w[k][j]) { d[j]=d[k]+w[k][j]; } } } } int main() { memset(vis,0,sizeof(vis)); memset(w,0,sizeof(w)); int i,j; scanf("%lf%lf%lf%lf",&t[0].u,&t[0].v,&t[1].u,&t[1].v); int temp=2; cnt=2; double u,v; while(scanf("%lf%lf",&u,&v)!=EOF) { if(u==-1&&v==-1) { for(i=temp;i<cnt-1;i++) { double x=get(t[i].u,t[i].v,t[i+1].u,t[i+1].v)/40000.0; w[i][i+1]=w[i+1][i]=x; } temp=cnt; continue; } t[cnt].u=u; t[cnt].v=v; cnt++; } for(i=0;i<cnt;i++) { for(j=0;j<cnt;j++) { if(w[i][j]==0) { w[i][j]=w[j][i]=get(t[i].u,t[i].v,t[j].u,t[j].v)/10000.0; } } } dij(0); printf("%d\n",(int)(d[1]*60.0+0.5)); }
相关文章推荐
- 分布式集群系统下的高可用session解决方案
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- HDU 5428 The Factor (素因数分解)
- WPF Step By Step 系列-Prism框架在项目中使用
- 阿里云 Linux 系统挂载数据盘:适用系统:Linux(Redhat , CentOS,Debian,Ubuntu)
- SRAM与DRAM区别
- 下半部和下半部执行的工作--工作队列
- ServiceLocator是反模式
- css.day01
- WPF Step By Step 自定义模板
- WPF Step By Step 完整布局介绍
- studio 快捷键
- 一个API接口的例子,包括单元测试
- 数组在java中的声明和应用
- Ruby:字符串处理函数
- WPF Step By Step 控件介绍
- 从委托、匿名方法到Lambda
- MVC上传照片
- uclibc和glibc的差别
- emacs学习笔记1