[图论训练]BZOJ 3245: 最快路线【最短路】
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
Source
思路:其实很明显的,这里不仅要记录到这个点的时间,还有到这个点的速度,于是记录一个二维的dist[x][y]表示到x点时速度为y最短时间即可
需要注意的是为了使到这个点的速度最小,可能经过一个点多次,所以输出路径的数组需要开大,此外这个最大值比较大
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#define maxn 100000
using namespace std;
int head[maxn],nex[maxn],point[maxn],len[maxn],speed[maxn], now;
typedef pair<int, int> pii;
pii pre[][];
int visit[][];
double dist[][];
int ans[];
void add(int x,int y,int s,int l)
{
nex[++now] = head[x];
head[x] = now;
point[now] = y;
len[now] = l;
speed[now] = s;
}
void spfa(int s)
{
for(int i=;i<=;i++)
for(int j = ; j <= ; j++)dist[i][j] = -;
dist[s][] = ;
visit[s][] = ;
queue<pii>q;
q.push(make_pair(s, ));
while(!q.empty())
{
pii k = q.front();
q.pop();
visit[k.first][k.second] = ;
for(int i = head[k.first]; i; i = nex[i])
{
int u = point[i], sp;
double di = ;
if(speed[i] != )
{
di = dist[k.first][k.second] + 1.0*len[i] / speed[i], sp = speed[i];
}
else
{
di = dist[k.first][k.second] + 1.0*len[i] / k.second, sp = k.second;
}
if(di < dist[u][sp] || dist[u][sp] == -)
{
dist[u][sp] = di;
pre[u][sp] = k;
if(!visit[u][sp])
{
visit[u][sp] = ;
q.push(make_pair(u,sp));
}
}
}
}
}
int main()
{
int n,m,d,x,y,a,b,h=;
scanf("%d%d%d",&n,&m,&d);
d++;
for(int i = ; i <= m; i++)
{
scanf("%d%d%d%d",&x,&y,&a,&b);
add(x + , y + , a, b);
}
spfa();
double an = 1000000000.00;
for(int i = ; i <= ; i++)if(dist[d][i] != -)
{
if(dist[d][i] < an)
{
an = dist[d][i];
y = i;
}
}
x = d;
ans[++h] = d;
while(pre[x][y].first != || pre[x][y].second != )
{
ans[++h] = pre[x][y].first;
int xx = pre[x][y].first, yy = pre[x][y].second;
x = xx; y = yy;
}
for(int i = h; i >= ; i--)
{
printf("%d ",ans[i]-);
}
printf("%d\n",ans[]-);
return ;
}
[图论训练]BZOJ 3245: 最快路线【最短路】的更多相关文章
- BZOJ 3245: 最快路线 spfa
3245: 最快路线 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3245 Description 精明的小R每每开车出行总是喜欢走最快 ...
- BZOJ 3245 最快路线
和道路升级差不多,只是用的spfa; 十分有毒,在BZOJ上一直WA,对拍拍出来是一样的却告诉我不一样,然后发现自己把'\n'写成了‘\b’... #include<cstdio> #in ...
- BZOJ3245:最快路线(最短路)
Description 精明的小R每每开车出行总是喜欢走最快路线,而不是最短路线.很明显,每条道路的限速是小R需要考虑的关键问题.不过有一些限速标志丢失了,于是小R将不知道能开多快.不过有一个合理的方 ...
- [图论训练]BZOJ 2118: 墨墨的等式 【最短路】
Description 墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N.{an}.以及B的取值范围,求出有多少B可以使等式存在 ...
- [图论训练]BZOJ 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路【floyd】
Description 农夫约翰正驾驶一条小艇在牛勒比海上航行. 海上有N(1≤N≤100)个岛屿,用1到N编号.约翰从1号小岛出发,最后到达N号小岛.一 张藏宝图上说,如果他的路程上 ...
- [BZOJ3245]最快路线
Description 精明的小R每每开车出行总是喜欢走最快路线,而不是最短路线.很明显,每条道路的限速是小R需要考虑的关键问题.不过有一些限速标志丢失了,于是小R将不知道能开多快.不过有一个合理的方 ...
- 洛谷 P4300 BZOJ 1266 [AHOI2006]上学路线route
题目描述 可可和卡卡家住合肥市的东郊,每天上学他们都要转车多次才能到达市区西端的学校.直到有一天他们两人参加了学校的信息学奥林匹克竞赛小组才发现每天上学的乘车路线不一定是最优的. 可可:“很可能我们在 ...
- BZOJ 1266: [AHOI2006]上学路线route(最短路+最小割)
第一问最短路.第二问,先把最短路的图建出来(边(u,v)满足d[s->u]+d[v->t]+d(u,v)==最短路径长度,就在图中,可以从源点和汇点分别跑一次最短路得到每个点到源点和汇点的 ...
- BZOJ 1880: [Sdoi2009]Elaxia的路线( 最短路 + dp )
找出同时在他们最短路上的边(dijkstra + dfs), 组成新图, 新图DAG的最长路就是答案...因为两人走同一条路但是不同方向也可以, 所以要把一种一个的s,t换一下再更新一次答案 ---- ...
随机推荐
- python_97_类的继承2
# 经典类与新式类差别主要体现在多继承上 #多继承是从左到有 class People():#经典类 #class People(object):#新式类 def __init__(self,name ...
- PopClip:你会热爱的文本穿梭机
http://www.ifanr.com/234952 由于我是一名 Evernote 用户(不是印象笔记),最近发现它所提供的浏览器插件无论是 Web Cliper 还是 Clearly,反应速度都 ...
- cocos2d-x中解决暂停并保存画面和开始的功能
1.调用所有对象的pauseSchedulerAndActions().太麻烦,不太现实,而且有很多对象不易获取. 2.CCDirector::sharedirector()->pause(). ...
- [转]LLE
原始特征的数量可能很大,或者说样本是处于一个高维空间中,通过映射或变换的方法,降高维数据降低到低维空间中的数据,这个过程叫特征提取,也称降维. 特征提取得基本任务研究从众多特征中求出那些对分类最有效的 ...
- 【Python学习之三】函数的参数
在学习Python的过程中,我认为Python函数是很重要的一部分.其中参数的类型和数量,是一个比较容易弄混乱的点. 1.一般参数 首先,写一个计算两个数的和的函数: def addNum(x, y) ...
- Python数据分析实战视频教程【小蚊子数据分析实战课程】
点击了解更多Python课程>>> Python数据分析实战视频教程[小蚊子数据分析实战课程] [课程概述] Python数据分析实战' 适用人群:适合需提升竞争力.提升工作效率.喜 ...
- tempfs详解
致因 在平常工作中,我们经常需要查看Linux服务器磁盘挂载使用情况,可以使用df命令,不知大家注意到没有,我们使用此命令除了会查看到系统盘以及数据盘挂载情况,还会看到一个tmpfs也在挂载. [ro ...
- Vue基础指令集锦
v-model双向绑定数据 <input type="text" v-model="msg"> {{msg}} ###v-on 事件 <div ...
- AHB 总线问答(转)
AHB总线问答 http://blog.163.com/huanhuan_hdu/blog/static/1352981182011625916845/ 仲裁:主设备可以在一个突发传输中解除HLOCK ...
- Python开发环境与开发软件的安装
Python开发的必要因素: 开发软件:PyCharm 社区版 PyCharm安装过程: 首先去官网下载:(链接为: https://www.jetbrains.com/pycharm/downlo ...