题意:

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

给出多条地铁线,给出每站的坐标,已知地铁是双向的,每条线以-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. Win10 系统安装Sql Server2008 R2 数据库遇到的问题及解决办法总结!

    1.开始安装时,提示要先安装 “.NET Framework 3.5(包括.NET 2.0和3.0)”,之前已经下载好.NET Framework 3.5 sp1,安装时还是提示要先安装 “.NET  ...

  2. PHP一句话后门过狗姿势万千之传输层加工

    既然木马已就绪,那么想要利用木马,必然有一个数据传输的过程,数据提交是必须的,数据返回一般也会有的,除非执行特殊命令. 当我们用普通菜刀连接后门时,数据时如何提交的,狗狗又是如何识别的,下面结合一个实 ...

  3. 分类IP地址(A、B、C类)的指派范围、一般不使用的特殊IP地址

    分类IP地址(A.B.C类)的指派范围.一般不使用的特殊IP地址 A类地址:0开头,8位网络号 B类地址:10开头,16位网络号 C类地址:110开头,24位网络号 D类地址:1110开头,多播地址 ...

  4. 事件冒泡 & 阻止事件冒泡

    事件冒泡 : 当一个元素接收到事件的时候,会把他接收到的所有传播给他的父级,一直到顶层window.事件冒泡机制 阻止冒泡 : 当前要阻止冒泡的事件函数中调用 event.cancelBubble = ...

  5. ACCEPT详解

    NAME 名称 accept - 在一个套接字上接收一个连接 SYNOPSIS 概述 #include <sys/types.h> #include <sys/socket.h> ...

  6. less算宽度 加~ width: calc(~"50% - 35px");

    less算宽度 加~  width: calc(~"50% - 35px");

  7. PHP09 字符串和正则表达式

    学习要点 字符串处理简介 常用的字符串输出函数 常用的字符串格式化函数 字符串比较函数 正则表达式简介 正则表达式语法规则 与perl兼容的正则表达式函数    字符串处理介绍 Web开发中字符串处理 ...

  8. HDU-4791-Alice‘s Print Service

    分析: 1.由于价格是递减的,所以可能出现si*pi>sj*pj(j>i).所以要有一个数组来储存当前端点的最小值. 2.然后二分查找当前的si,比较q*p[i]和M[i+1].不过在这之 ...

  9. linux 作为web应用服务器内核参数/etc/sysctl.conf

    # Kernel sysctl configuration file for Red Hat Linux## For binary values, 0 is disabled, 1 is enable ...

  10. HDU 6216 A Cubic number and A Cubic Number(数学/二分查找)

    题意: 给定一个素数p(p <= 1e12),问是否存在一对立方差等于p. 分析: 根据平方差公式: 因为p是一个素数, 所以只能拆分成 1*p, 所以 a-b = 1. 然后代入a = b + ...