Subway POJ 2502
题目链接:
http://poj.org/problem?id=2502
题目大意:
你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学。因为你不想迟到,所以你想知道自己多长时间能到达学校,你步行的速度是 10km/h,
地铁的速度是40km/h, 假如你是幸运的,你刚到地铁就有一辆地铁行驶过来, 你马上就可以乘坐, 任意的一个地铁你可以乘坐多次,若果你愿意你可以换乘不同的地铁,所有的地铁都是两个方向的。
输入:
输入首先包含两个坐标,表示你家的坐标和学校的坐标,随后有几个规格的地铁线路, 每个地铁线路包含几个坐标, 每个坐标表示地铁的站台,地铁到这个坐标时会停止, 你可以假设地铁站之间是直线。给个坐标都是整数,每个地铁线路至少有两站,最后两个 -1 代表地铁的站结束,最多有200站,
输出:
输出一个分钟数,表示家到学校的最短时间。结果四舍五入
题目分析:
这题目难点就是在处理数据问题上,其他的都简单,但是有点是要注意的就是 铁路线的每个站点 并不是直线, 有可能是曲线, 因此在算距离的时候地铁的两个点并不能全部以直线距离来算
代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define INF 0xffffffff
#define maxn 520 struct Point
{
double x, y;
int k;
}P[maxn]; bool vis[maxn];
int n;
double G[maxn][maxn], dist[maxn];
double Len(Point A, Point B)
{
return sqrt( 1.0*(A.x - B.x)*(A.x - B.x) + 1.0*(A.y - B.y)*(A.y - B.y) );
}
void Init()
{
memset(vis,false,sizeof(vis));
for(int i=; i<=n; i++)
{
dist[i] = INF;
}
}
void Input()
{
int k = ;
n = ; scanf("%lf%lf%lf%lf",&P[].x,&P[].y,&P[].x,&P[].y);
P[].k = , P[].k = ; while(scanf("%lf%lf",&P[n].x, &P[n].y) != EOF )
{
n ++;
P[n-].k = k; if( P[n-].x == - && P[n-].y == -)
{
n --;
k ++;
}
} for(int i=; i<n; i++)
{
for(int j=; j<=i; j++)
{
double len = Len(P[i], P[j]), time; time = len / 10000.0 * ; if(P[i].k == P[j].k && i == j+ )
{
time = len / 40000.0 * ;
} G[i][j] = time;
G[j][i] = G[i][j];
}
}
}
double Spfa()
{
int e = ; queue<int> Q; dist[] = ;
Q.push(e); while( !Q.empty() )
{
e = Q.front();
Q.pop(); vis[e] = false; for(int i=; i<n; i++)
{
if(dist[i] > dist[e] + G[e][i])
{
dist[i] = dist[e] + G[e][i]; if(!vis[i])
{
vis[i] = true;
Q.push(i);
}
}
}
}
return dist[];
} int main()
{ Input(); Init(); double ans = Spfa(); printf("%0.lf\n",ans); return ;
}
Subway POJ 2502的更多相关文章
- L - Subway - POJ 2502
题意:在一个城市里,分布着若干条地铁线路,每条地铁线路有若干个站点,所有地铁的速度均为40km/h.现在你知道了出发地和终点的坐标,以及这些地铁 线路每个站点的坐标,你的步行速度为10km/h,且你到 ...
- Subway POJ - 2502 最短路
题意:给出地铁线 起点和 终点 坐地铁速度为v2 走路为v1 求起点到终点的最短距离 (答案需要四舍五入这里坑了好久) 拿给出的地铁站点 和起点终点建边即可 然后跑个迪杰斯特拉 #inclu ...
- Subway POJ - 2502 spfa
#include<cstdio> #include<cmath> #include<cstring> #include<cstring> #includ ...
- 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 ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- POJ 2502 Subway(迪杰斯特拉)
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6692 Accepted: 2177 Descriptio ...
- POJ 2502 Subway (Dijkstra 最短+建设规划)
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6689 Accepted: 2176 Descriptio ...
- POJ 2502 Subway
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4928 Accepted: 1602 Descriptio ...
- POJ 2502 Subway (最短路)
Subway 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/L Description You have just moved ...
随机推荐
- 从Delphi 7升级到Delphi XE
Delphi 7和XE中间有好几个版本号,可都不太流行,一是由于Delphi有些边缘化,二是7在XP环境下是近乎完美的版本号.市场上关于delphi的书越来越少,提供从7升级到XE介绍的资料差点儿没用 ...
- android开发launcher
1. launcher是桌面应用程序 一. android.intent.category.LAUNCHER与android.intent.category.HOME的差别? android ...
- [Android]如何创建一个View的分割线
如何创建一个View的分割线,如上图 我们见介绍三种可以创建看起来很不错的view的分割线,如在button之间添加分割线. 这个例子是将为LinearLayout内的三个Button间添加分割线. ...
- PID38 串的记数(codevs2077)
/* 假设当前有a个A b个B c个C 用 f[a][b][c]来表示 那么如果这个串以A结尾 那就是 f[a-1][b][c]转移来的 所以构成 f[a][b][c]的串一定有一部分是 f[a-1] ...
- C#关于使用枚举遇到的问题----Type运算符使用的必要性
我定义了一个枚举AttributeName 然后写到下面代码: Enum .GetValues (AttributeName ): 毫无疑问的错了.别人说要加个Typeof 也就是Enum .GetV ...
- “死锁” 与 python多线程之threading模块下的锁机制
一:死锁 在死锁之前需要先了解的概念是“可抢占资源”与“不可抢占资源”[此处的资源可以是硬件设备也可以是一组信息],因为死锁是与不可抢占资源有关的. 可抢占资源:可以从拥有他的进程中抢占而不会发生副作 ...
- asp.net微信开发第四篇----已关注用户管理
公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的OpenID,可以通过 ...
- 关于Core Data的一些整理(二)
关于Core Data的一些整理(二) 创建NSManagedObject的子类时,有一点是在这中间要强调的一点是,要不要勾选 Use scalar properties for primitive ...
- Delphi PChar与String互转
1.String转化成PChar 例: var str: string; pStr:PChar; ... pStr := PChar(str); 2.PChar转String 例: var pStr: ...
- 使用Maven构建javaWeb项目时,启动tomcat出错:严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.conte
在初学使用maven构建javaWeb的项目的时候,启动tomcat加载时,总是提示如下错误,辛苦一番终于找到解决办法. 严重: Error configuring application liste ...