[luoguP1266] 速度限制(spfa)
因为到某一没有限速的路径速度会有不同的可能,所以直接用 dis[i][j] 表示到第 i 个点速度为 j 时的最短时间,然后跑spfa。
——代码
#include <queue>
#include <cstdio>
#include <cstring> using namespace std; const int MAXN = ;
int n, m, d, cnt;
int head[MAXN], to[MAXN * MAXN], next[MAXN * MAXN], spd[MAXN * MAXN], lon[MAXN * MAXN], pr[MAXN][], ps[MAXN][];
double dis[MAXN][], ans = ;
bool vis[MAXN][];
queue < pair <int, int> > q;
pair <int, int> x; inline void add(int x, int y, int v, int l)
{
to[cnt] = y;
spd[cnt] = v;
lon[cnt] = l;
next[cnt] = head[x];
head[x] = cnt++;
} inline void spfa()
{
int i, j, u, v, s, p;
memset(dis, , sizeof(dis));
q.push(make_pair(, ));
dis[][] = ;
while(!q.empty())
{
x = q.front();
q.pop();
u = x.first;
s = x.second;
vis[u][s] = ;
for(i = head[u]; i != -; i = next[i])
{
v = to[i];
p = spd[i] == ? s : spd[i];
if(dis[v][p] > dis[u][s] + 1.0 * lon[i] / p)
{
dis[v][p] = dis[u][s] + 1.0 * lon[i] / p;
pr[v][p] = u;
ps[v][p] = s;
if(!vis[v][p])
{
vis[v][p] = ;
q.push(make_pair(v, p));
}
}
}
}
} inline void print(int u, int pos)
{
if(pr[u][pos] != -) print(pr[u][pos], ps[u][pos]);
printf("%d ", u);
} int main()
{
int i, x, y, v, l, pos;
scanf("%d %d %d", &n, &m, &d);
memset(pr, -, sizeof(pr));
memset(ps, -, sizeof(ps));
memset(head, -, sizeof(head));
for(i = ; i <= m; i++)
{
scanf("%d %d %d %d", &x, &y, &v, &l);
add(x, y, v, l);
}
spfa();
for(i = ; i <= ; i++)
if(ans > dis[d][i])
ans = dis[d][i], pos = i;
print(d, pos);
return ;
}
[luoguP1266] 速度限制(spfa)的更多相关文章
- P1266 速度限制(分层图spfa)
P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快. ...
- 洛谷 P1266 速度限制 最短路+SPFA算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 题面 题目链接 P1266 速度限制 题目描述 在这个繁忙的社会中,我们往往不 ...
- 洛谷P1266速度限制
传送门啦 看起来是一个最短路问题,但是引入了速度限制,就要写一下二维最短路了. $ dis[i][j] $ :表示到i这个点,速度为j的最短时间. #include <iostream> ...
- 洛谷 P1266 速度限制
题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快.一种可以辩解的解决方案 ...
- P1266 速度限制
P1266 速度限制 第一次接触这种分层spfa 类似于dp 个人理解 #include<cstdio> #include<iostream> #include<algo ...
- 【BZOJ-3627】路径规划 分层图 + Dijkstra + spfa
3627: [JLOI2014]路径规划 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 186 Solved: 70[Submit][Status] ...
- POJ 2387 Til the Cows Come Home(最短路 Dijkstra/spfa)
传送门 Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 46727 Acce ...
- sgu 240 Runaway (spfa)
题意:N点M边的无向图,边上有线性不下降的温度,给固定入口S,有E个出口.逃出去,使最大承受温度最小.输出该温度,若该温度超过H,输出-1. 羞涩的题意 显然N*H的复杂度dp[n][h]表示到达n最 ...
- spfa模板
通过stl的queue实现的spfa(vector实现邻接表存图) 本模板没有考虑存在两点不连通的情况 如果需要判断则需要用到并查集或者遍历整个邻接表 #include<iostream> ...
随机推荐
- LVS集群-DR模式
同上个实验一样,还是准备三台机器 分发器(sishen_63):eth0 192.168.1.63 RealServer1sishen_64) RealServer2sishen_65) 首先配置网卡 ...
- poj2112Optimal Milking(二分+最大流)
链接 floyd求出牛到机器的最短距离,二分距离,小于当前距离的边容量设为1,求出满容量下的最短距离. EK算法 #include <iostream> #include<cstdi ...
- Android开发-浅谈架构(一)
写在前面的话 嗯 聊聊架构. 这段时间一直在维护旧项目. 包括自己之前写的新项目 越来越发现 一个架构清晰的项目往往让人赏心悦目.不至于在一个bug丢过来之后手足无措.包括以后别人接收自己的项目 能很 ...
- tar.bz2
tar -xvjf gcc-4.1.0.tar.bz2 bzip2 -d gcc-4.1.0.tar.bz2
- Hibernate中的inverse和cascade属性
Hibernate中的inverse和cascade属性 inverse的值有两种,"true"和"false".inverse="false&quo ...
- SVN与TFS自动同步脚本(很实用)
一直都在园子里看文章,因为各种原因懒得写文章.最近稍得空闲,把这几天的工作成果分享一下. 因为工作需要,开发人员使用Qt进行系统移动端的开发,Qt的版本控制却不提供连接TFS的设置,只有使用svn.没 ...
- 【HEVC简介】CTU、CU、PU、TU结构
参考文献:见<High Efficiency Video Coding (HEVC)>Block Structures and Parallelism Features in HEVC章 ...
- Java代理模式精讲之静态代理,动态代理,CGLib代理
代理(Proxy)是一种设计模式,通俗的讲就是通过别人达到自己不可告人的目的(玩笑). 如图: 代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象 这三个代理模式,就 ...
- rfcn讲解博客
http://www.cnblogs.com/lillylin/p/6277094.html ROI pooling操作的输入(对于C+1个类)是k^2*(C+1)*W' *H'(W'和H'是ROI的 ...
- PRJ0003 : Error spawning 'midl.exe'
原因:出现该错误的是由于:C:\Program Files\Microsoft SDKs\Windows\v6.0A midl.exe 和midlc.exe缺失. 解决方法:从别人电脑上拷贝这个两个文 ...