
拓扑排序&&最短路
拓扑排序&&最短路
cqcqygranhj
这个作者很懒,什么都没留下…
展开
-
Dijkstra算法
Dijkstra 算法是对SPFA算法的优化,将普通的队列改为关于距离的优先队列。好处是一旦某个元素出列,这个元素的最短距离已经正确,无需再次入列。算法描述:不再将相邻点编号加入队列,而是将相邻点的编号和距离都加入队列,每次出列距离最小的点模板:#include <bits/stdc++.h>using namespace std;typedef pair<int, ...原创 2020-02-21 11:43:15 · 168 阅读 · 0 评论 -
SPFA算法实现
SPFA算法是基于拓扑排序的升级版,将边权也考虑在内,SPFA实质是一种基于距离更新+队列的算法。算法描述:基于拓扑排序稍作改动。从给定起点开始,周围点若距离有更新(变长或变短),就更新距离,若被更新点不在队列里,就把被更新点入列;代码实现#include <bits/stdc++.h>using namespace std;typedef long long ll;t...原创 2020-02-21 10:55:43 · 406 阅读 · 0 评论 -
拓扑排序
拓扑排序是查找有向无环图(DAG)的拓扑序或最长(短)路的一种基本方法,依据BFS思想。一般模板如下:#include<bits/stdc++.h>using namespace std;int T,n,m,u,v;int deg[100005]; //deg[i]表示i的入度 int vis[100005]; //思考一下,没有vis数组会出现什么问题? vector&...原创 2020-02-21 09:59:56 · 149 阅读 · 0 评论