题目链接:

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的更多相关文章

  1. L - Subway - POJ 2502

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

  2. Subway POJ - 2502 最短路

    题意:给出地铁线  起点和 终点  坐地铁速度为v2  走路为v1 求起点到终点的最短距离  (答案需要四舍五入这里坑了好久) 拿给出的地铁站点 和起点终点建边即可  然后跑个迪杰斯特拉 #inclu ...

  3. Subway POJ - 2502 spfa

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

  4. 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 ...

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

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

  6. POJ 2502 Subway(迪杰斯特拉)

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6692   Accepted: 2177 Descriptio ...

  7. POJ 2502 Subway (Dijkstra 最短+建设规划)

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6689   Accepted: 2176 Descriptio ...

  8. POJ 2502 Subway

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4928   Accepted: 1602 Descriptio ...

  9. POJ 2502 Subway (最短路)

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

随机推荐

  1. Spring中的AOP

    什么是AOP? (以下内容来自百度百科) 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...

  2. IOS 获取wifi的SSID

    #import <SystemConfiguration/CaptiveNetwork.h> - (NSString *)currentWifiSSID { // Does not wor ...

  3. python-property、docstring--笔记

    已经有人总结的非常详细,而且写得不错,就直接贴过来用了 property作为装饰器函数,负责把一个方法变成属性调用的 廖雪峰关于property的讲解 http://www.liaoxuefeng.c ...

  4. Android比较实用的属性

    ImageView //设置图片填充整个背景 android:scaleType="fitXY"

  5. Linq101-QueryExecution

    using System; using System.Linq; namespace Linq101 { class QueryExecution { /// <summary> /// ...

  6. 此方法显式使用的 CAS 策略已被 .NET Framework 弃用

    用vs2008开发的应用程序在vs2012中打开时提示如下: 此方法显式使用的 CAS 策略已被 .NET Framework 弃用.若要出于兼容性原因而启用 CAS 策略,请使用 NetFx40_L ...

  7. (转)PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明

    在看帝国cms的connect.php是发现第一句是error_reporting(E_ALL ^ E_NOTICE);以前也没注意过这个语句,知道是设置错误提示的,但不清楚具体怎样设置使用.下面从网 ...

  8. 访问的是A网址,但是跳转B网址的内容,地址栏还是A网址

    最近家里宽带续费,是用小区小广告的宽带,打开http://download.csdn.net/ 或其他一些设计下载.购物商城或威客网址进不去 提示 经过网上大量搜索和请教,都说是以下几点引起的 1.网 ...

  9. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

  10. OC中的单例设计模式及单例的宏抽取

    // 在一个对象需要重复使用,并且很频繁时,可以对对象使用单例设计模式 // 单例的设计其实就是多alloc内部的allocWithZone下手,重写该方法 #pragma Person.h文件 #i ...