SPjkstra算法 SPjkstra算法,~~顾名思义就是SPFA与Dijkstra算法重重叠加~~,效果良好。 SPjkstra算法:193ms SPFA算法:13266ms 说明:为第一个测试点的测试数据。 什么是SPjkstra算法? 就是某些蒟蒻~~比如说我~~因为只学了SPFA算法,但是 ...
分类:
其他好文 时间:
2019-11-07 23:30:24
阅读次数:
104
图论: 一.最短路: 1.spfa算法中的vis数组记录的是有没有入队,防止多次入队,通过松弛操作来达到最优解 2.dijkstra算法的vis是记录是否出队,也就是说根据贪心的过程,我们在优先队列里可能会多次放一个点 但是我们只需要用距离最小的点来更新,其他入队的相同点不能更新来保证时间复杂度 3 ...
分类:
其他好文 时间:
2019-11-05 16:53:49
阅读次数:
70
题目链接: "https://www.luogu.org/problem/P1144" 其实这道题目是最短路的变形题,因为数据范围 $N \le 10^6, M \le 2 \times 10^6$ ,所以直接用Dijkstra算法是不行的,可以使用 Dijkstra+堆优化 或者 SPFA算法来实 ...
分类:
其他好文 时间:
2019-11-04 21:25:55
阅读次数:
70
化简:够简的了.....但是!翻译绝对有锅。 这个最短路是从n到每个点的单源最短路,也就是最短路径树。 那么,思路就很明确了。建两个图,然后跑两边SPFA,记录下最短路径。 然后,对于两点之间的边,如果最短路不经过它,那么最终图边权+1; 然后在最终图上(边权为0,1,2)跑一遍SPFA即可。 一开 ...
分类:
其他好文 时间:
2019-11-02 09:56:44
阅读次数:
85
最短路算法有个基础——————松弛操作(在大多数最短路算法都会涉及) 最短路算法一共有多少种方法我不知道,在这里我只想记录4种: ?Dijkstra:求单源点最短路(不含负边权) ?Bellman-ford:求单源点最短路(可含负边权) ?SPFA(使用队列优化后的Bellman-ford) ?Fl ...
分类:
编程语言 时间:
2019-11-01 22:44:30
阅读次数:
126
int dis[maxn]; bool vis[maxn]; queueq; void spfa(int x) { mem(dis, 0x3f); mem(vis, false); dis[x] = 0; q.push(x); vis[x] = true; while (!q.empty()) { ... ...
分类:
其他好文 时间:
2019-10-30 18:34:43
阅读次数:
88
1 #include<iostream> 2 #include<string> 3 #include<queue> 4 #include<stack> 5 #include<vector> 6 #include<map> 7 #include<cstdio> 8 #include<cstdlib> ...
分类:
其他好文 时间:
2019-10-30 18:00:07
阅读次数:
100
连着挂了三天T1了。 89: SPFA$vst$数组没清空 90:调试的时候多删了一句代码 91:没开$long long$ 我真是废物。 ...
分类:
其他好文 时间:
2019-10-29 11:12:53
阅读次数:
52
https://www.luogu.org/problem/P2868 分析: 明显的01分数规划 求最优比率环 用dfs版的spfa找负环 二分就好 code by wzxbeliever: c++ include include include include include define N ...
分类:
其他好文 时间:
2019-10-29 09:24:07
阅读次数:
69
题意 n<=30000,m<=30000 题解 暴力的话就是直接建边跑spfa最短路 然而直接建边看上去复杂度正确,实际最多会建$n^2$条边, 看上去复杂度正确如何不试一试, $dis[x][y]$表示位置$x$有一只跳跃长度为y的狗 炸空间十分严重30000*30000开不下 ,考虑分块,这样就 ...