HDU - 2502 Subway
题目链接:http://poj.org/problem?id=2502
分析:
告诉一些地铁线路,从起点到终点,中途可以步行,可以坐地铁,找一条最短的路
主要是把图建立好,然后直接dijkstra或者floyd,因为速度不同,所以转化成求最短的时间
题目大致处理方法就是将每个地铁站点与相邻的站点用时先算出,然后再算各个点之间步行耗时,最后一个dijkstra。
*:scanf的返回值由后面的参数决定scanf("%d%d",&a,&b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end of file,返回值为EOF.
且返回值为int型.
Sample Input
- -
- -1
Sample Output
**********************************************
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<stdlib.h>
#include<map>
#include<cmath> using namespace std; #define N 2500
#define INF 0x3f3f3f3f double v1=40000.0/,v2=10000.0/;
double maps[N][N], dist[N];
int vis[N], k=;; struct node
{
int x,y;
} p[N]; node s,e; double Len(node a,node b)
{
double x=a.x-b.x;
double y=a.y-b.y;
double len=sqrt(x*x+y*y);
return len;
} void Init()
{
for(int i=; i<N; i++)
{
for(int j=; j<N; j++)
maps[i][j]=(i==j)?:INF;
dist[i]=INF;
}
} void dij()
{
int i,j; for(i=; i<k; i++)
dist[i]=maps[][i]; vis[]=; for(i=; i<k; i++)
{
double Min=INF;
int index=-;
for(j=; j<k; j++)
{
if(vis[j]==&&Min>dist[j])
{
Min=dist[j];
index=j;
}
}
if(index==-) break;
vis[index]=; for(j=;j<k;j++)
if(dist[j]>maps[index][j]+dist[index]&&vis[j]==)
dist[j]=maps[index][j]+dist[index];
}
} int main()
{
int x,y,f=, i,j; scanf("%d %d", &s.x,&s.y);
scanf("%d %d",&e.x,&e.y);
p[]=s;
p[]=e; memset(vis,,sizeof(vis));
memset(maps,,sizeof(maps));
Init(); dist[]=;
vis[]=; while(scanf("%d %d",&x,&y)==)/*/
{
if(x==-&&y==-)
{
f=;
continue ;
} p[k].x=x;
p[k].y=y; if(f==)
maps[k][k-]=maps[k-][k]=min(maps[k][k-], Len(p[k],p[k-])/v1);
f=;
k++;
}
for(i=; i<k; i++)
for(j=; j<k; j++)
maps[i][j]=maps[j][i]=min(maps[i][j], Len(p[i],p[j])/v2); dij(); printf("%.0f\n", dist[]); return ;
}
HDU - 2502 Subway的更多相关文章
- 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(迪杰斯特拉)
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 ...
- HDU 2502 月之数(二进制,规律)
月之数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- POJ 2502 Subway (最短路)
Subway 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/L Description You have just moved ...
- POJ 2502 Subway
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4928 Accepted: 1602 Descriptio ...
- (简单) POJ 2502 Subway,Dijkstra。
Description You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of ...
- Dijkstra+计算几何 POJ 2502 Subway
题目传送门 题意:列车上行驶40, 其余走路速度10.问从家到学校的最短时间 分析:关键是建图:相邻站点的速度是40,否则都可以走路10的速度.读入数据也很变态. #include <cstdi ...
随机推荐
- java 类型转换(摘自网络)
java基本类型转换规则 1.基本数据类型的转换是指由系统根据转换规则自动完成,不需要程序员明确地声明不同数据类型之间的转换. 转换在编译器执行,而不是等到运行期再执行. 2.基本数据类型 ...
- log4j2配置MDC分线程写日志
1.MDC是一个高级一些的工具,可以配置分用户(userid)写日志,也可以分线程 2.方法和道理都是相似的,在写入日志之前配置线程名或者用户id 3.如果将线程名配置为目录,可以将不同线程的日志输送 ...
- java编写简单的累加程序
编程思路:1.建立类包demo: 2.在类包中建立CommanParameter类: 3.利用for循环通过强制类型转换将在后台中输入的String类型的字符转换为整型并进进累加操作: package ...
- Linux下编译C代码,出现tan函数报错的情况
undefined reference to `tan' 但是已经包含了头文件 <math.h>了,可还是报错,说是找不到tan 这个问题的原因不是很清楚, 但是网上给出的方案,就是编译的 ...
- linux服务器出现严重故障后的原因以及解决方法
1.把系统安装光盘插入,重启机器,启动时迅速按下Del键,进入CMOS,把启动顺序改为光盘先启动,这样就启动了Linux安装程序,按F5,按提示打入Linux rescue回车,进入救援模式,接下来是 ...
- foreach 跟volist 有什么区别?
<foreach name="list" item="vo">{$vo.id}{$vo.name}</foreach>Foreach标签 ...
- 使用Java7提供的Fork/Join框架
http://blog.csdn.net/a352193394/article/details/39872923 使用Java7提供的Fork/Join框架 2014-10-07 23:55 4818 ...
- js基础和工具库
/* * 作者: 胡乐 * 2015/4/18 * js 基础 和 工具库 * * * */ //根据获取对象 function hGetId(id){ return document.getElem ...
- JVM调优总结-调优方法
JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪 JProfiler ...
- HDU2206:IP的计算
Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方 ...