题意:给出地铁线  起点和 终点  坐地铁速度为v2  走路为v1 求起点到终点的最短距离  (答案需要四舍五入这里坑了好久)

拿给出的地铁站点 和起点终点建边即可  然后跑个迪杰斯特拉

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const double v1=10000.0/;
const double v2=40000.0/;
int n;
const int maxn=+;
double dist[maxn];
double cost[maxn][maxn];
int vis[maxn];
const double INF=1e30; struct Node{
double x,y;
}node[maxn]; double dis(const Node&a,const Node&b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
} void Dijkstra(){
for(int i=;i<=n;i++){
dist[i]=INF;
}
memset(vis,,sizeof(vis));
dist[]=;
for(int j=;j<n;j++){
int k=-;
double minnum=INF;
for(int i=;i<=n;i++){
if(!vis[i]&&dist[i]<minnum){
minnum=dist[i];
k=i;
}
}
if(k==-)break;
vis[k]=;
for(int i=;i<=n;i++){
if(!vis[i]&&dist[k]+cost[k][i]<dist[i]){
dist[i]=dist[k]+cost[k][i];
}
}
}
}
int main(){
while(scanf("%lf%lf%lf%lf",&node[].x,&node[].y,&node[].x,&node[].y)==){
n=;
int cnt1=;
for(int i=;i<maxn;i++)
for(int j=;j<maxn;j++)
if(i!=j)cost[i][j]=INF;
else cost [i][j]=;
int x,y;
bool ok=; while(scanf("%d%d",&x,&y)==){
if(x==-&&y==-){
ok=;
continue;
}
n++;
node[n].x=x;
node[n].y=y;
if(ok){
cost[n][n-]=cost[n-][n]=min(cost[n][n-],dis(node[n],node[n-])/v2);
}
ok=;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
cost[i][j]=cost[j][i]=min(cost[i][j],dis(node[i],node[j])/v1);
}
Dijkstra();
cout << int( dist[] + 0.5 );
}
return ;
}

Subway POJ - 2502 最短路的更多相关文章

  1. Subway POJ 2502

    题目链接: http://poj.org/problem?id=2502 题目大意: 你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学.因为你不想迟到 ...

  2. POJ 2502 最短路

    http://poj.org/problem?id=2502 同一条地铁线上的站点相邻点间按照v2建边,然后所有点之间按照v1更新建边,所有的边都是双向边,both directions. 然后直接跑 ...

  3. L - Subway - POJ 2502

    题意:在一个城市里,分布着若干条地铁线路,每条地铁线路有若干个站点,所有地铁的速度均为40km/h.现在你知道了出发地和终点的坐标,以及这些地铁 线路每个站点的坐标,你的步行速度为10km/h,且你到 ...

  4. Subway POJ - 2502 spfa

    #include<cstdio> #include<cmath> #include<cstring> #include<cstring> #includ ...

  5. POJ 2502 Subway / NBUT 1440 Subway / SCU 2186 Subway(图论,最短距离)

    POJ 2502 Subway / NBUT 1440 Subway / SCU 2186 Subway(图论,最短距离) Description You have just moved from a ...

  6. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  7. Heavy Transportation POJ 1797 最短路变形

    Heavy Transportation POJ 1797 最短路变形 题意 原题链接 题意大体就是说在一个地图上,有n个城市,编号从1 2 3 ... n,m条路,每条路都有相应的承重能力,然后让你 ...

  8. POJ 2502 Subway (最短路)

    Subway 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/L Description You have just moved ...

  9. (poj 2502) Subway 最短路

    题目链接: 题意:在一个城市里有许多地铁,现在你知道每条地铁的起点  终点与停站点的坐标,知道我们的起始坐标与终点坐标,问加上走路最快到达终点的时间是多少? 方法:求出任意两点的车速时间与步行时间,再 ...

随机推荐

  1. 如何向微软 Docs 和本地化社区提交翻译贡献

    Docs (docs.microsoft.com)是微软新版的文档网站,重新规划了各项技术栈的文档结构,看起来比 MSDN 可读性更好.虽然 Docs 提供了各种语言的版本,但大多是机器翻译,某些中文 ...

  2. 关于eclipse tomcat 无法启动(8080,8005,8009端口被占用)的解决方法,附 eclipse tomcat 与 tomcat 并存方式

    eclipse 在编译运行时 新建的tomcat连接始终为stopped状态,描述为8080,8005,8009端口被占用. 这是因为在装完tomcat后,tomcat服务已启动,而eclipse仅仅 ...

  3. elasticsearch简单操作(一)

    1.增加记录 例如1:向指定的 /Index/Type 发送 PUT 请求,就可以在 Index 里面新增一条记录.比如,向/accounts/person发送请求,就可以新增一条人员记录. curl ...

  4. [2019BUAA软工助教]Alpha阶段无人转出申请审核结果

    [2019BUAA软工助教]Alpha阶段无人转出申请审核结果 一.队伍信息 队伍名 项目 人数 红太阳 社团 8(6+2) pureman 博客园 6 水哥牛逼 招募 6 葫芦娃 拖拽Pytorch ...

  5. TCP粘包问题解析与解决

    一.粘包分析 作者本人在写一个FTP项目时,在文件的上传下载模块遇到了粘包问题.在网上找了一些解决办法,感觉对我情况都不好用,因此自己想了个比较好的解决办法,提供参考 1.1 粘包现象 在客户端与服务 ...

  6. C++诡异异常处理

    虽然现在C++头文件允许只编译一次,但仍然可能因为头文件引用引起问题,当出现:“构造函数初始值设定项列表只能在构造函数定义中使用”,可能的原因是头文件互相引用导致的. 出现“error LNK1120 ...

  7. MySQL的视图总结

    使用下面格式创建视图: create or replace view viewName as select ..... from ...... where .... 删除视图: drop view v ...

  8. python3 网页下拉框和悬浮框操作基础汇总

    #悬浮定位操作 from selenium.webdrier import ActionChains #浏览器实例化 #定位移动的位置赋给一个参数 ActionChains(浏览器).move_to_ ...

  9. spark单击 搭建

    http://files.cnblogs.com/files/yxnyd/spark.zip

  10. picker-view 组件 的value失效问题

    首先检查是不是漏了绑定关系 组件内 组件引用 如过还不行就用下面的方法,顺序问题 在给暂时列表赋值之后再对value赋值