题意:

给出两个坐标,分别是小明家和小明学校的坐标。

给出多条地铁线,给出每站的坐标,已知地铁是双向的,每条线以-1 -1结尾。

给出地铁速度,步行速度。

地铁线可看成是顺次连接的线段。

求小明从家到学校用到的时间。

思路:

任何两点之间都可以连速度为步行的无向边,地铁相邻两站可以连速度为地铁速度的无向边。

之后进行SPFA;

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
using namespace std;
const int inf=;
double dis[];
bool vis[];
double numa=500.0/;
double numb=2000.0/;
struct node
{
double x,y;
};
node nodes[];
struct edge
{
int id;
double mint;
edge *next;
};
edge edges[];
edge *adj[];
int ednum;
int num;
double cal(int a,int b,double c)
{
return sqrt((nodes[a].x-nodes[b].x)*(nodes[a].x-nodes[b].x)+(nodes[a].y-nodes[b].y)*(nodes[a].y-nodes[b].y))/c;
}
inline void addEdge(int a,int b,double c)
{
edge *tmp;
tmp=&edges[ednum];
ednum++;
tmp->id=b;
tmp->mint=c;
tmp->next=adj[a];
adj[a]=tmp;
}
void SPFA()
{
memset(vis,,sizeof(vis));
for(int i=;i<num;i++)
{
dis[i]=inf;
}
queue<int>q;
q.push();
vis[]=;
dis[]=;
while(!q.empty())
{
int tmp=q.front();
q.pop();
vis[tmp]=;
for(edge *p=adj[tmp];p;p=p->next)
{
if(p->mint+dis[tmp]<dis[p->id])
{
dis[p->id]=p->mint+dis[tmp];
if(!vis[p->id])
{
q.push(p->id);
vis[p->id]=;
}
}
}
}
}
int main()
{
for(int i=;i<=;i++)
{
adj[i]=NULL;
}
ednum=;
num++;
scanf("%lf%lf",&nodes[num].x,&nodes[num].y);
num++;
scanf("%lf%lf",&nodes[num].x,&nodes[num].y);
num++;
while(scanf("%lf%lf",&nodes[num].x,&nodes[num].y)!=EOF)
{
num++;
while(scanf("%lf%lf",&nodes[num].x,&nodes[num].y))
{
if(nodes[num].x<&&nodes[num].y<)
break;
num++;
addEdge(num-,num-,cal(num-,num-,numb));
addEdge(num-,num-,cal(num-,num-,numb));
}
}
for(int i=;i<num;i++)
{
for(int j=;j<i;j++)
{
addEdge(i,j,cal(i,j,numa));
addEdge(j,i,cal(i,j,numa));
}
}
SPFA();
printf("%.0lf\n",dis[]);
}

POJ 2502 【思维是朴素的最短路 卡输入和建图】的更多相关文章

  1. 【LibreOJ】#6354. 「CodePlus 2018 4 月赛」最短路 异或优化建图+Dijkstra

    [题目]#6354. 「CodePlus 2018 4 月赛」最短路 [题意]给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j)*C到达(C是给定的常数),求A到B的最短距离.\ ...

  2. POJ 2391 Ombrophobic Bovines ( 经典最大流 && Floyd && 二分 && 拆点建图)

    题意 : 给出一些牛棚,每个牛棚都原本都有一些牛但是每个牛棚可以容纳的牛都是有限的,现在给出一些路与路的花费和牛棚拥有的牛和可以容纳牛的数量,要求最短能在多少时间内使得每头牛都有安身的牛棚.( 这里注 ...

  3. POJ 2502 Subway-经过预处理的最短路

    Description You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of ...

  4. [SDOI2017]天才黑客[最短路、前缀优化建图]

    题意 一个 \(n\) 点 \(m\) 边的有向图,还有一棵 \(k\) 个节点的 trie ,每条边上有一个字符串,可以用 trie 的根到某个节点的路径来表示.每经过一条边,当前携带的字符串就会变 ...

  5. TTTTTTTTTTTT POJ 2112 奶牛与机器 多重二分匹配 跑最大流 建图很经典!!

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 15682   Accepted: 5597 ...

  6. PIGS POJ - 1149网络流(最短增广路---广搜) + 建图

    题意: 第一行输入m和n,m是猪圈的数量,n是顾客的数量,下面n行 第 i+1行表示第i个顾客 , 输入第一个数字表示有几把猪圈的钥匙,后面输入对应的猪圈,最后一个数字输入顾客想买几头猪. 建图: 设 ...

  7. Invitation Cards POJ - 1511 (双向单源最短路)

    In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...

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

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

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

随机推荐

  1. vue利用计算属性做(展开收起)小例子

    <template> <div class="wrap"> <div class="box"> <div v-for= ...

  2. HYSBZ 1588 营业额统计 (Splay树)

    题意:给出一个公司每一天的营业额,求每天的最小波动值之和.该天的最小波动值= min { 绝对值| 该天以前某一天的营业额-该天的营业额 | }.第一天的最小波动值就是其自己. 思路:Splay伸展树 ...

  3. js实现ctrl+v粘贴并上传图片

    前端页面: <textarea class="scroll" id="text" placeholder="在此输入...">& ...

  4. python_对字符串操作.join() 效率 比 + 效率高

    将列表中的字符拼接成字符串时,有两种方式 方式1:使用join()方法,将列表转为字符串 方式2:使用+运算符,循环遍历 import time str1 = ['a','b','c','d','e' ...

  5. Modal 下面的 v-model 就是显示不显示 true 或 false

    Modal 下面的 v-model 就是显示不显示 true 或 false

  6. CPP-STL:list容器

    本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂.不失为STL的入门文章,新手不容错过! 目录 1 定义一个list 2 使用list的成员函数p ...

  7. 暑假集训 || LCA && RMQ

    LCA定义为对于一颗树 树上两个点的最近公共祖先 一.Tarjan求LCA(离线方法 https://blog.csdn.net/lw277232240/article/details/7701751 ...

  8. <c:forEach>实例演示

    <c:forEach>实例演示 <%@ page language="java" contentType="text/html; charset=UTF ...

  9. 【转载】WampServer图标显示红色后变成橙色怎么解决

    WampServer就是Windows Apache Mysql PHP集成安装环境,即在window下的apache.php和mysql的服务器软件. 工具/原料   WampServer 方法/步 ...

  10. linux(php环境) 安装ffmpeg

    实现上传视频获取视频的第一帧当做视频封面 1.安装ffmpeg ffmpeg的下载链接  https://ffmpeg.org/download.html 解压安装包 tar -jxvf ffmpeg ...