BZOJ3245:最快路线(最短路)
Description
Input
Output
Sample Input
0 1 25 68
0 2 30 50
0 5 0 101
1 2 70 77
1 3 35 42
2 0 0 22
2 1 40 86
2 3 0 23
2 4 45 40
3 1 64 14
3 5 0 23
4 1 95 8
5 1 0 84
5 2 90 64
5 3 36 40
Sample Output
HINT
【数据范围】
30% N<=20
100% 2<=N<=150;0<=V<=500;1<=L<=500
Solution
dis[i][j]表示到i点速度为j的最短时间
Code
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std; struct Edge{int to,next,len,v;}edge[];
struct Node{int p,v;}t,pre[][];
int n,m,tar,u,v,l,c,used[][];
double dis[][],ans=1e17;
int head[],num_edge,maxv;
queue<Node>q; void add(int u,int v,int l,int c)
{
edge[++num_edge].to=v;
edge[num_edge].next=head[u];
edge[num_edge].len=l;
edge[num_edge].v=c;
head[u]=num_edge;
} void SPFA()
{
for (int i=; i<=; ++i)
for (int j=; j<=; ++j) dis[i][j]=1e17;
dis[][]=; used[][]=true;
t.p=; t.v=; q.push(t);
while (!q.empty())
{
Node x=q.front(); q.pop();
for (int i=head[x.p]; i; i=edge[i].next)
{
int sp=edge[i].v==?x.v:edge[i].v;
if (dis[x.p][x.v]+1.0*edge[i].len/sp<dis[edge[i].to][sp])
{
dis[edge[i].to][sp]=dis[x.p][x.v]+1.0*edge[i].len/sp;
pre[edge[i].to][sp]=x;
if (!used[edge[i].to][sp])
{
used[edge[i].to][sp]=true;
t.p=edge[i].to; t.v=sp; q.push(t);
}
}
}
used[x.p][x.v]=false;
}
} void Print(int x,int v)
{
if (pre[x][v].p) Print(pre[x][v].p,pre[x][v].v);
printf(" %d",x);
} int main()
{
scanf("%d%d%d",&n,&m,&tar);
for (int i=; i<=m; ++i)
{
scanf("%d%d%d%d",&u,&v,&c,&l);
add(u,v,l,c);
}
SPFA();
for (int i=; i<=; ++i)
ans=min(ans,dis[tar][i]);
for (int i=; i<=; ++i)
if (dis[tar][i]==ans)
printf(""),Print(tar,i);
}
BZOJ3245:最快路线(最短路)的更多相关文章
- [BZOJ3245]最快路线
Description 精明的小R每每开车出行总是喜欢走最快路线,而不是最短路线.很明显,每条道路的限速是小R需要考虑的关键问题.不过有一些限速标志丢失了,于是小R将不知道能开多快.不过有一个合理的方 ...
- [图论训练]BZOJ 3245: 最快路线【最短路】
Description 精 明的小R每每开车出行总是喜欢走最快路线,而不是最短路线.很明显,每条道路的限速是小R需要考虑的关键问题.不过有一些限速标志丢失了,于是小R将不知 道能开多快.不过有一个合理 ...
- BZOJ 3245: 最快路线 spfa
3245: 最快路线 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3245 Description 精明的小R每每开车出行总是喜欢走最快 ...
- Luogu P2149 [SDOI2009]Elaxia的路线(最短路+记忆化搜索)
P2149 [SDOI2009]Elaxia的路线 题意 题目描述 最近,\(Elaxia\)和\(w**\)的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们必须合理地安排两个人在一起的 ...
- [NOIP2001提高组]CODEVS1014 Car的旅行路线(最短路)
最短路,这个不难想,但是要为它加边就有点麻烦..还好写完就过了(虽然WA了一次,因为我调试用的输出没删了..),不然实在是觉得挺难调的.. ------------------------------ ...
- BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )
找出同时在他们最短路上的边(dijkstra + dfs), 组成新图, 新图DAG的最长路就是答案...因为两人走同一条路但是不同方向也可以, 所以要把一种一个的s,t换一下再更新一次答案 ---- ...
- 【BZOJ1880】[SDOI2009]Elaxia的路线 (最短路+拓扑排序)
[SDOI2009]Elaxia的路线 题目描述 最近,\(Elaxia\)和\(w**\)的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. \(El ...
- 【BZOJ1880】[Sdoi2009]Elaxia的路线 最短路+DP
[BZOJ1880][Sdoi2009]Elaxia的路线 Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起 ...
- 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...
随机推荐
- MySQL触发器基本使用
文章参考:这里 MySQL中,创建触发器的基本语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EA ...
- Fatal error: Call-time pass-by-reference has been removed in *****.php on line 18
问题描述:最近刚刚将php升级到5.4.13,但是打开一个页面的时候出现报错:Fatal error: Call-time pass-by-reference has been removed in ...
- PD虚拟机修改RemixOS的屏幕分辨率
PD虚拟机修改RemixOS的屏幕分辨率 2017年12月02日02:13:55 by SemiconductorKING 最近要用个移动端APP,手机不方便就想在电脑跑一个,然后装了个以前用过的觉得 ...
- Lucene学习之四:Lucene的索引文件格式(2)
本文转载自:http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623599.html 略有删减和补充 四.具体格式 上面曾经交代过,L ...
- Effective C++ .44 typename和class的不同
在C++模板中的类型参数一般可以使用typename和class,两者没有什么不同.但是typename比class多项功能: “任何时候当你想要在template中指涉一个嵌套从属类型名称,就必须在 ...
- Linux Loop设备 使用
有时候需要一个独立的块设备,loop设备是个方便的选择,可通过如下方式创建 dd if=/dev/zero of=./loopback_file bs=1M count=1000 losetup /d ...
- 关于css伪类,伪元素详解总结
伪类 伪类就是一种虚构的状态或者说是一个具有特殊属性的元素可以使用CSS进行样式修饰.常见的几种伪类是: :link , :visited , :hover , :active , :first-ch ...
- MobileWeb 适配总结
开门见山,本篇将总结一下 MobileWeb 的适配方法,即我们常说的H5页面.手机页面.WAP页.webview页面等等. 本篇讨论的页面指专门针对手机设备设计的页面,并非兼容全设备的响应式布局. ...
- 20个实用的javascript技巧及实践(一)
在本篇文章中,我们将会向大家分享JavaScript开发中的小技巧.最佳实践和实用内容,不管你是前端开发者还是服务端开发者,都应该来看看这些编程的技巧总结,绝对会让你受益匪浅的. 文中所提供的代码片段 ...
- COGS2485 从零开始的序列
传送门 题意:给定一个长为$n$的序列,定义$f(x)$表示所有(长为$x$的区间最小值)的最大值,求$f(1)$~$f(n)$. 看好多人都用并查集做的,然而我并不想写……既然品酒大会可以后缀数组+ ...