[图论训练]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换一下再更新一次答案 ---- ...
随机推荐
- 网站被K怎么办?
网站被K怎么办? 网站被K有几种状况,一种是网站的主页被删去或许网站悉数内容被删去就剩主页,还有一种是内容也在第“一”页,主页在后面,这种状况对初学者来讲是不会去留意的,他们会觉得这是正常的,其实这个 ...
- k8s1.13.0二进制部署-Dashboard和coredns(五)
部署UI 下载yaml文件https://github.com/kubernetes/kubernetes [root@k8s-master1 ~]# git clone https://github ...
- Vue处理ajax请求
Ajax请求 1>解决跨域问题 1.1前端解决.只需要在vue.config.js中增加devServer节点增加代理: const path = require("path" ...
- C语言单链表的实现
// // main.c // gfhjhgdf // // Created by chenhao on 13-12-23. // Copyright (c) 2013年 chenhao. A ...
- 【费用流】bzoj1834: [ZJOI2010]network 网络扩容
还是稍微记一下这个拆点模型吧 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: ...
- Library setup
- Tomcat上传文件报错:returned a response status of 403 Forbidden
出现这样的错误是没有权限对服务器进行写操作.需要在这个项目所在的tomcat中配置可写操作即可: 在tomcat的web.xml添加下面代码: <init-param><param- ...
- vscode设置让鼠标滚动改变字体大小
打开settings.json文件 输入"editor.mouseWheelZoom": true, 这样比较方面,比默认的放大缩小来的快捷
- 牛客网 Wannafly挑战赛21 灯塔
Z市是一座港口城市,来来往往的船只依靠灯塔指引方向.在海平面上,存在n个灯塔.每个灯塔可以照亮以它的中心点为中心的90°范围.特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要 ...
- Spring核心技术(十三)——环境的抽象
本章将描述一下Spring中针对环境的抽象. Environment是一个集成到容器之中的特殊抽象,它针对应用的环境建立了两个关键的概念:profile和properties. profile是命名好 ...