spfa优化板子
用双端队列,当待加入元素小于队首元素时 加入队首, 否则 加入队尾
slf优化
if(!vis[e.v])
{
if(Q.empty()) Q.push_front(e.v);
else
{
if(d[e.v] < d[Q.front()]) Q.push_front(e.v);
else Q.push_back(e.v);
}
vis[e.v] = ;
}
next从结构体中分离出来 用数组记录
using namespace std;
const int maxn = , INF = 0x7fffffff;
int n, m, s, t;
int head[maxn], nex[maxn << ], d[maxn], vis[maxn], cnt; struct node
{
int u, v, w;
}Node[maxn << ]; void add_(int u, int v, int w)
{
Node[cnt].u = u;
Node[cnt].v = v;
Node[cnt].w = w;
nex[cnt] = head[u];
head[u] = cnt++;
} void add(int u, int v, int w)
{
add_(u, v, w);
add_(v, u, w);
} void spfa()
{
deque<int> Q;
for(int i = ; i < maxn; i++) d[i] = INF;
Q.push_front(s);
mem(vis, );
d[s] = ;
vis[s] = ;
while(!Q.empty())
{
int u = Q.front(); Q.pop_front();
vis[u] = ;
for(int i = head[u]; i != -; i = nex[i])
{
int v = Node[i].v;
if(d[v] > d[u] + Node[i].w)
{
d[v] = d[u] + Node[i].w;
if(!vis[v])
{
if(Q.empty()) Q.push_front(v);
else
{
if(d[v] < d[Q.front()]) Q.push_front(v);
else Q.push_back(v);
}
vis[v] = ;
}
}
}
}
} int main()
{
while(scanf("%d%d", &n, &m) && n + m)
{
mem(head, -);
cnt = ;
int u, v, w;
for(int i = ; i < m; i++)
{
scanf("%d%d%d", &u, &v, &w);
add(u, v, w);
}
s = , t = n;
spfa();
printf("%d\n", d[t]);
}
return ;
}
spfa优化板子的更多相关文章
- $spfa-dfs$优化板子
		
\(spfa-dfs\)优化板子 快速判断是否存在负环(没负环时不要作死用) bool spfa(int u){ vis[u]=1; for(register int i=head[u];i;i=nx ...
 - 【BZOJ】2100: [Usaco2010 Dec]Apple Delivery(spfa+优化)
		
http://www.lydsy.com/JudgeOnline/problem.php?id=2100 这题我要吐血啊 我交了不下10次tle.. 噗 果然是写挫了. 一开始没加spfa优化果断t ...
 - 【NOIP模拟题】行动!行动!(spfa+优化)
		
spfa不加优化果断tle最后一个点................... 这题和ch的一题很像,只不过这题简单点,这是一个层次图,即有很多个相同的图,这些相同的图之间又存在着练习.. 然后每一次队列 ...
 - 【BZOJ3875】[Ahoi2014&Jsoi2014]骑士游戏 SPFA优化DP
		
[BZOJ3875][Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会扮演一个英勇的 ...
 - 【luogu P3371 单源最短路径 】 模板 SPFA优化
		
无优化:500ms deque优化:400ms #include <queue> #include <cstdio> #include <cstring> #inc ...
 - 一些神奇的(优化)板子——来自Loi_black的博客
		
deque<int>q; void spfa(int s) { ;i<=n;i++) d[i]=1e9; d[s]=; q.push_back(s); used[s]=; while ...
 - Codeforces 938D Buy a Ticket 【spfa优化】
		
用到了网络流的思想(大概).新建一个源点s,所有边权扩大两倍,然后所有的点向s连边权为点权的无向边,然后以s为起点跑spfa(S什么L优化的),这样每个点到s的距离就是答案. 原因的话,考虑答案应该是 ...
 - icpc 银川 H. Delivery Route SPFA优化
		
Problem Description Pony is the boss of a courier company. The company needs to deliver packages to ...
 - 「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)
		
我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将 ...
 
随机推荐
- jQuery 初识 筛选器 属性选择器
			
---------------------------大事使我们惊讶,小事使我们沮丧,久而久之,我们对这二者都会习以为常. 一 jQuery是什么? [1] jQuery由美国人John Resi ...
 - 第十二次oo作业
			
作业十二 规格化设计简介 规格化设计的发展历史 1950年代,第一次分离,主程序与子程序的分离结构是树状模型,子程序可先于主程序编写.通过使用库函数来简化编程,实现最初的代码重用.产生基本的软件开发过 ...
 - C++常用代码优化策略
			
C++代码常用的优化策略 1.不存在指向空值的引用,意味着引用比指针的效率更高,因为在使用引用之前不需要测试它的合法性:指针可以被重新赋值以指向另一个不同的对象,但是引用总是指向它初始化时指定的对象. ...
 - 福州大学软件工程1816 | W班 第2次作业成绩排名
			
作业链接 词频统计基础功能 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客评分规则 在文章开头给出你们Fork仓库的Github项目地址.(1') 在开始实现程序 ...
 - 持续集成之Jenkins自动部署war包到远程服务器
			
一.无war包链接的情况 无war包链接时,需先下载war包到本地,然后执行: ---------------------------------------------以下部分为转载-------- ...
 - MySql数据库连接池专题
			
MySql数据库连接池专题 - aspirant - 博客园https://www.cnblogs.com/aspirant/p/6747238.html
 - Python3练习题 001:4个数字求不重复的3位数
			
#Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...
 - 【学亮IT手记】Servlet的生命周期
			
1.1 Servlet的生命周期 1.1.1 Servlet的生命周期概述 1.1.1.1 什么是生命周期 生命周期:一个对象从创建到销毁过程. 1.1.1.2 Servlet的生命周期(*****) ...
 - js实现input的赋值
			
input框赋值如下所示,是一个文本框的html代码,实际开发中,要涉及到将数据库中的数据取出然后放入input框中. <input id="name1" name=&quo ...
 - input type=date时,时间数据回填,报错The specified value "2019-0404-18" does not conform to the required format, "yyyy-MM-dd".
			
<input autocomplete id="start-time" name="start_time" type="date" c ...