POJ2502乘坐地铁上学
题目大意:给你一个二维地图,起点终点,以及多条地铁线路(只有相邻两站才可互通)中的站点坐标。步行以及坐地铁的速度;
思路:难点在于建图,一个多小时磨磨蹭蹭,都是因为思路没捋清楚~~,对于每一条地铁线,在输入站点坐标的过程中我们就可以建立图像了;输入完成后,遍历所有的点再建立,以步行为计量单位的图像。就ok啦,然后裸spfa就好了
#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
#include <cmath>
#include <queue>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 2e5 + 2e2;
struct Point
{
double x,y;
Point (double x = 0.0,double y = 0.0):x(x),y(y){}
}ps[maxn];
struct node
{
int to,pre;
double v;
}edge[maxn];
double d[maxn];
int vis[maxn];
int id[maxn];
int cnt;
int nump;
void init()
{
memset(vis,0 ,sizeof(vis));
memset(id,-1,sizeof(id));
cnt = 0;
nump = 2;
}
void add(int from,int to,double v)
{
edge[cnt].to = to;
edge[cnt].v = v;
edge[cnt].pre = id[from];
id[from] = cnt++;
} double disget(int i,int j)
{
return sqrt((ps[i].x - ps[j].x) * (ps[i].x - ps[j].x) +
(ps[i].y - ps[j].y) * (ps[i].y - ps[j].y));
}
queue<int>q;
void spfa(int s)
{
q.push(s);
vis[s] = 1;
d[s] = 0;
while(q.size())
{
int now = q.front();q.pop();
vis[now] = 0;
for(int i = id[now];~i;i = edge[i].pre)
{
if(d[edge[i].to] > d[now] + edge[i].v)
{
d[edge[i].to] = d[now] + edge[i].v;
if(!vis[edge[i].to])
{
vis[edge[i].to] = 1;
q.push(edge[i].to);
}
}
}
}
}
int main()
{
init();
double x,y;
scanf("%lf%lf",&x,&y);
ps[0]=Point(x,y);
scanf("%lf%lf",&x,&y);
ps[1] = Point(x,y);
d[1] = inf;
while(~scanf("%lf%lf",&x,&y))
{
ps[nump] = Point(x,y);
d[nump++] = inf;
while(~scanf("%lf%lf",&x,&y) && x != -1 && y != -1)
{
ps[nump] = Point(x,y);
double v = disget(nump,nump-1) / (1000.0 * 40.0) * 60.0;
//cout<<v<<endl;
add(nump - 1,nump,v);
add(nump,nump - 1,v);
d[nump++] = inf;
}
}
for(int i = 0;i < nump;i++)
{
for(int j = 0;j < nump;j++)
{
double v = disget(i,j) / (1000 * 10) * 60;
//cout<<v<<endl;
add(i,j,v);
}
}
spfa(0);
printf("%d\n",int(d[1] + 0.5));
return 0;
}
POJ2502乘坐地铁上学的更多相关文章
- 团队项目成员与题目(本地地铁查询app)
团队名称:Daydreaming团队成员及其特点:张运涛:能快速与团队成员中的每一位进行合作,能全面考虑遇到的问题,善于总结积累.能较好的理解老师与其他人员的想法要求.刘瑞欣:做事果断,善于领导,有想 ...
- 华为上机测试题(地铁换乘-java)
PS:自己写的,自测试OK,供大家参考. /* 高级题样题:地铁换乘描述:已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的.经过的站点名分别如下,两条线交叉的换乘点用T1.T2表示.编写 ...
- AcWing 157. 树形地铁系统 (hash判断树同构)打卡
一些主要城市拥有树形的地铁系统,即在任何一对车站之间,有且只有一种方式可以乘坐地铁. 此外,这些城市大多数都有一个中央车站. 想象一下,你是一名在拥有树形地铁系统的城市游玩的游客,你想探索该城市完整的 ...
- Subway POJ 2502
题目链接: http://poj.org/problem?id=2502 题目大意: 你刚从一个安静的小镇搬到一个吵闹的大城市,所以你不能再骑自行车去上学了,只能乘坐地铁或者步行去上学.因为你不想迟到 ...
- 纸上谈兵: 图 (graph)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 图(graph)是一种比较松散的数据结构.它有一些节点(vertice),在某些节 ...
- 将.dat文件导入数据库
*最近在搞文本分类,就是把一批文章分成[军事].[娱乐].[政治]等等. 但是这个先需要一些样本进行训练,感觉文本分类和"按图索骥"差不多,训练的文章样本就是"图&quo ...
- (原创)通用查询实现方案(可用于DDD)[附源码] -- 设计思路
[声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3988592.html). [系列文章] 通用查询实现方案(可用于DDD)[附源码] -- ...
- (原创)通用查询实现方案(可用于DDD)[附源码] -- 简介
[声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3985353.html). [系列文章] 通用查询实现方案(可用于DDD)[附源码] -- ...
- viewport ——视区概念,为 自适应网页设计
什么是Viewport 手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机 ...
随机推荐
- spring 整合 struts2 xml配置
整合之前要搞清楚struts2是什么; struts2:表现层框架 增删改查 作用域 页面跳转 异常处理 ajax 上传下载 excel 调用service spring :IOC/ ...
- debug-stripped.ap_' specified for property 'resourceFile' does not exist.(转载)
1.错误描述 更新Android Studio到2.0版本后,出现了编译失败的问题,我clean project然后重新编译还是出现抑郁的问题,问题具体描述如下所示: Error:A problem ...
- Process ProcessThread Thread
Process ProcessThread: Process and ProcessThread objects have a ProcessorAffinity property of IntPtr ...
- springboot 面向切面
@Aspect @Configuration public class AspectTest { @Pointcut("execution(public String xxx.xxx.xxx ...
- python模块之time模块
import time #从1970年1月1号凌晨开始到现在的秒数,是因为这一年unix的第一个商业版本上市了,这个最常用# print(time.time()) # 1491574950.23983 ...
- Linux SSH基于密钥交换的自动登陆原理简介及配置说明
一.原理简介 SSH证书认证登录的基础是一对唯一匹配密钥: 私钥(private key)和公钥(public key).公钥用于对数据进行加密,而且只能用于加密.而私钥只能对使用所匹配的公钥,所加密 ...
- .NET 发送邮件
//邮件配置 public static string mail_smtp = System.Configuration.ConfigurationManager.AppSettings[" ...
- Asia Stock Exchanges[z]
Asia Stock Exchanges July 7, 2009 This article is to summarise the trading rules of some Asia stocke ...
- DB2事务日志
1.DB2数据库的日志原理 事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logpr ...
- PAT 1077 互评成绩计算(20)(代码+思路)
1077 互评成绩计算(20 分) 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一 ...