P1266 速度限制
第一次接触这种分层spfa
类似于dp 个人理解
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
struct node
{
int p;
int v;
int l;
int x;
};
struct que
{
int p;
int v;
};
queue<que>q;
node l[100000];
int h[501],t;
int pp[500][510],pv[500][510];
bool vis[500][510];
double map[500][510];
void add(int a,int b,int c,int d)
{
l[++t].p=b;
l[t].v=c;
l[t].l=d;
l[t].x=h[a];
h[a]=t;
}
void print(int a,int b)
{
if(a!=1)
print(pp[a][b],pv[a][b]);
printf("%d ",a-1);
}
int main()
{
int n,m,end;
scanf("%d%d%d",&n,&m,&end);
end+=1;
int a,b,c,d;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
a+=1;
b+=1;
add(a,b,c,d);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=510;j++)
map[i][j]=0x7ffffff;
vis[1][70]=true;
map[1][70]=0;
que pa,net;
pa.p=1;
pa.v=70;
q.push(pa);
while(!q.empty())
{
pa=q.front();
q.pop();
vis[pa.p][pa.v]=false;
for(int i=h[pa.p];i;i=l[i].x)
{
if(l[i].v==0)
{
if(map[l[i].p][pa.v]>1.0*map[pa.p][pa.v]+1.0*l[i].l/pa.v)
{
map[l[i].p][pa.v]=1.0*map[pa.p][pa.v]+1.0*l[i].l/pa.v;
pp[l[i].p][pa.v]=pa.p;
pv[l[i].p][pa.v]=pa.v;
if(!vis[l[i].p][pa.v])
{
vis[l[i].p][pa.v]=true;
net.p=l[i].p;
net.v=pa.v;
q.push(net);
}
}
}
else
{
if(map[l[i].p][l[i].v]>1.0*map[pa.p][pa.v]+1.0*l[i].l/l[i].v)
{
map[l[i].p][l[i].v]=1.0*map[pa.p][pa.v]+1.0*l[i].l/l[i].v;
pp[l[i].p][l[i].v]=pa.p;
pv[l[i].p][l[i].v]=pa.v;
if(!vis[l[i].p][l[i].v])
{
vis[l[i].p][l[i].v]=true;
net.p=l[i].p;
net.v=l[i].v;
q.push(net);
}
}
}
}
}
double minn=0x7ffffff;
for(int i=1;i<=500;i++)
if(minn>map[end][i])
{
minn=map[end][i];
a=pp[end][i];
b=pv[end][i];
}
print(a,b);
printf("%d",end-1);
}
P1266 速度限制的更多相关文章
- P1266 速度限制(分层图spfa)
P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快. ...
- 洛谷 P1266 速度限制 最短路+SPFA算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不 ...
- 洛谷P1266速度限制
传送门啦 看起来是一个最短路问题,但是引入了速度限制,就要写一下二维最短路了. $ dis[i][j] $ :表示到i这个点,速度为j的最短时间. #include <iostream> ...
- 洛谷 P1266 速度限制
题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快.一种可以辩解的解决方案 ...
- P1266 速度限制 (最短路,图论)
题目链接 Solution 在最短路转移的时候在队列或者堆中记录状态为 \(f[u][v]\) 代表上一个节点为 \(u\) ,速度为 \(v\) . 然后按部就班转移即可... Code #incl ...
- 洛谷 P1266 速度限制 题解
题面 这道题可以理解为是一个分层图,也可以理解为是二维的SPFA dis[i][j]表示到达i这个点速度为j的最短路 然后跑已经死了的SPFA就好了: #include <bits/stdc++ ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- C# Net MVC 大文件下载几种方式、支持速度限制、资源占用小
上一篇我们说到大文件的分片下载.断点续传.秒传,有的博友就想看分片下载,我们也来总结一下下载的几种方式,写的比较片面,大家见谅^_^. 下载方式: 1.html超链接下载: 2.后台下载(四种方法:返 ...
- For macOS.百度网盘 破解SVIP、下载速度限制~
For macOS.百度网盘 破解SVIP.下载速度限制~ 是插件的 https://github.com/CodeTips/BaiduNetdiskPlugin-macOS 2019-01-03 让 ...
随机推荐
- 在Mac上安装mysql
进入这个网站: https://dev.mysql.com/downloads/mysql/ 然后点击安装就行了. 注意在这里启动mysql 然后mac上所有的mysql命令都得用绝对路径才能生效
- 苏D_8M150
20161226 麦德龙 西边 弄堂 前车 转弯 刹车,我 刹车,下雨路滑,滑到.没撞到前车.车型号没看...只记了车牌... 右手撑了一下,肩膀估计是撑伤了,举起来 比较疼... 不知 该如何处理, ...
- django建表报错
今天在用pycharm创建数据库的表的时候碰见了一个报错,这还是头一次碰见这种奇怪的错误.这里记住希望能避免错误. 我所创建的表是用的django原有的用户表,做了一下继承. class UserI ...
- 那些NPM文档中我看不懂地方
$cookies.set(keyName, value[, expireTimes[, path[, domain[, secure]]]]) //return this 中括号代表可选参数 上面一行 ...
- Spring Boot 实现ErrorController接口处理404、500等错误页面
在项目中我们遇到404找不到的错误.或者500服务器错误都需要配置相应的页面给用户一个友好的提示,而在Spring Boot中我们需要如何设置. 我们需要实现ErrorController接口,重写h ...
- 这是通过 Open Live Writer(是个博客编辑器) 发布的
Open Live Writer 是开源的win10上的博客编辑器
- mac 下安装 mysql
1. 下载mysql community server 2. 下载mysql workbench 3. 启动mysql server 4. 进入mysql命令行 5. 修改root密码 ALTER U ...
- CentOS 开机自启动脚本
开机时执行自己的脚本. 1.编写自己的服务脚本 进入系统服务脚本目录: cd /etc/rc.d/init.d/ vi test 内容如下: #!/bin/bash # # chkconfig: - ...
- 记一次无法登录 wine QQ
入Linux坑第X天,过了五一小长假,回来布置我的环境,本来不应该装一些不必要的东西分自己心,但还是装上,以便不时之需. 把输入法装好后,就安装了QQ,查过资料,都说wine_QQ国际版可以使用,于是 ...
- C# 多线程之线程同步
多线程间应尽量避免同步问题,最好不要线程间共享数据.如果必须要共享数据,就需要使用同步技术,确保一次只有一个线程访问和改变共享状态. 一::lock语句 lock语句事设置锁定和接触锁定的一种简单方法 ...