POJ 2502 【思维是朴素的最短路 卡输入和建图】
题意:
给出两个坐标,分别是小明家和小明学校的坐标。
给出多条地铁线,给出每站的坐标,已知地铁是双向的,每条线以-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 【思维是朴素的最短路 卡输入和建图】的更多相关文章
- 【LibreOJ】#6354. 「CodePlus 2018 4 月赛」最短路 异或优化建图+Dijkstra
[题目]#6354. 「CodePlus 2018 4 月赛」最短路 [题意]给定n个点,m条带权有向边,任意两个点i和j还可以花费(i xor j)*C到达(C是给定的常数),求A到B的最短距离.\ ...
- POJ 2391 Ombrophobic Bovines ( 经典最大流 && Floyd && 二分 && 拆点建图)
题意 : 给出一些牛棚,每个牛棚都原本都有一些牛但是每个牛棚可以容纳的牛都是有限的,现在给出一些路与路的花费和牛棚拥有的牛和可以容纳牛的数量,要求最短能在多少时间内使得每头牛都有安身的牛棚.( 这里注 ...
- POJ 2502 Subway-经过预处理的最短路
Description You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of ...
- [SDOI2017]天才黑客[最短路、前缀优化建图]
题意 一个 \(n\) 点 \(m\) 边的有向图,还有一棵 \(k\) 个节点的 trie ,每条边上有一个字符串,可以用 trie 的根到某个节点的路径来表示.每经过一条边,当前携带的字符串就会变 ...
- TTTTTTTTTTTT POJ 2112 奶牛与机器 多重二分匹配 跑最大流 建图很经典!!
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 15682 Accepted: 5597 ...
- PIGS POJ - 1149网络流(最短增广路---广搜) + 建图
题意: 第一行输入m和n,m是猪圈的数量,n是顾客的数量,下面n行 第 i+1行表示第i个顾客 , 输入第一个数字表示有几把猪圈的钥匙,后面输入对应的猪圈,最后一个数字输入顾客想买几头猪. 建图: 设 ...
- Invitation Cards POJ - 1511 (双向单源最短路)
In the age of television, not many people attend theater performances. Antique Comedians of Malidine ...
- POJ 2502 - Subway Dijkstra堆优化试水
做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...
- 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 ...
随机推荐
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- liunx+mysql数据库管理
源码安装 查询是否安装: rpm -aq |grep mysql 1.下载yum 源 wget 'https://dev.mysql.com/get/mysql57-commu ...
- 进程池_Pool
当需要创建子进程数量不多的时候,可以直接利用multiprocessing中的Process动态生成多个进程 但是如果是成百甚至上千个任务,手动地创建它的工作量很大,此时就可以利用到multiproc ...
- QT_2
1.默认生成代码的含义(.pro)
- 《3+1团队》【Alpha】Scrum meeting 3
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 3+1团队 团队博客地址 https://home.cnblogs.com/u/3-1group ...
- zabbix user-defined item
1.user-defind item at:/etc/zabbix/zabbix_agent.conf format: UserParameter=<key>,<command> ...
- 利用RestTemplate进行http调用
在对接API的时候,会涉及调用第三方的服务,这时候可以利用RestTemplate进行调用,下面给大家展示一个简单的调用demo. package com.tanlu.user.api.control ...
- ubuntu修改网卡名称ensX为eth0
1.sudo nano /etc/default/grub 找到GRUB_CMDLINE_LINUX="" 改为GRUB_CMDLINE_LINUX="net.ifnam ...
- saltstack快速部署
yum install wget deltarpm -y wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/rep ...
- linux常用过滤日志命令
#过滤nginx访问日志awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr -k1 | head -n 10 ...