最短路算法简单模板 一.floyed算法 首先对于floyed算法来说就是最短路径的动态规划解法,时间复杂度为O(n^3) 适用于图中所有点与点之间的最短路径的算法,一般适用于点n较小的情况。 Floyed算法有三层循环,循环的层次先后顺序也是比较重要的,分别为k ,i,j;因为dis[k][i][ ...
分类:
编程语言 时间:
2018-08-20 21:41:19
阅读次数:
216
说实话,我之前没有认真的spfa,现在后悔不以,特别是今天考了三题的图论,多要用到spfa,我肯定是懵逼地看题发呆;没有办法,知得晚上晚自习时写篇论文来回顾一下。 Bellman-ford大家应该都知道,其实spfa就在中国是这样叫的,在国外他们是叫“队列优化的Bellman-Ford算法”,管他的 ...
分类:
其他好文 时间:
2018-08-14 22:47:56
阅读次数:
252
最短路径算法简介 最短路径算法是在图中求两点(或多点)之间的最短路径,我们最常见的最短路径算法有四种:Bellman-ford、Dijkstra、SPFA、Floyd。 Bellman-ford算法可以用于有负边权的图,如果途图中有负环,算法也可以检验出来,时间复杂度为O(VE)。 Dijkstra ...
分类:
编程语言 时间:
2018-08-08 13:35:01
阅读次数:
152
tips: 1.判断是否有负权回路 2.Bellman-ford算法 3.对每条边进行n-1次松弛 4.啊哈算法上讲的比较好,但是稍微有点错误 5.c++里的构造函数 //一直wa的原因是......每次结束后vector没有清空 //刚开始还以为是inf定义的不够大 //spfa做法可参考http ...
分类:
其他好文 时间:
2018-08-08 00:00:41
阅读次数:
211
#include<bits/stdc++.h>using namespace std;const int inf=0x3f3f3f3f;struct node{ int v,z,d,next;//存可以连接的点,用next存邻接表}a[10010];struct road{ int u,cnt,di ...
分类:
其他好文 时间:
2018-08-04 21:42:21
阅读次数:
222
最短路+判负环优点:1.判负环比较稳(相对于spfa+dfs/bfs)2.存图超简单3.Bellman-Ford枚举的是边集{E},不需要考虑不联通的区块;如果写Dijkstra或SPFA,则要考虑这种情况。缺点:专求最短路复杂度大了点O(n*m) 分3个部分:1.做n-1次循环2.每个循环中遍历所 ...
分类:
其他好文 时间:
2018-07-29 23:54:37
阅读次数:
316
题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our city. Let us suppose that each point specializes in t ...
分类:
编程语言 时间:
2018-07-28 19:38:35
阅读次数:
175
#include #include #include #include #include #include using namespace std; struct uio{ int from,to,que; }edge[1001]; int road[1001],n,m; int main() { ... ...
分类:
其他好文 时间:
2018-07-08 19:04:53
阅读次数:
120
RT P3385 【模板】负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式: 第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数N M,表示图有N个顶点,M条边 接下来M行,每行三个整数a b w,表示a->b有一条权值为w的边 ...
分类:
其他好文 时间:
2018-07-07 20:51:55
阅读次数:
151
该算法由Bellman-Ford算法演变过来,首先介绍一下Bellman-Ford算法 最短路最多经过n-1个点,可以用n-1轮松弛操作来得到 当然这个算法我没有实际应用过,而是一直在用它的优化算法,利用队列代替前面的循环检查 SPFA最坏时间复杂度仍然为O(nm),但是有人分析其时间复杂度为O(k ...
分类:
编程语言 时间:
2018-07-06 13:14:30
阅读次数:
199