spfa 有无负权环 负权边最短路 模板
2016-10-21 15:37
357 查看
spfa 是利用队列优化的快速bellman-ford的算法,可以判断是否有负权环,如果没有的话可以求出来最短路。
const int maxn = 510; const int INF = 0x3fffffff; struct Node{ int e, w; Node(int ne, int nw) : e(ne),w(nw){} Node(){} }; vector<vector<Node> > G; int updateTimes[maxn];//判断是否有环 int dist[maxn]; bool spfa(int v, int n){//输入源点, 节点个数 for(int i = 1; i <= n; ++i) dist[i] = INF; dist[v] = 0; queue<int> q; q.push(v); memset(updateTimes ,0,sizeof(updateTimes)); while(!q.empty()){ int s = q.front(); q.pop(); for(int i = 0; i < G[s].size(); ++i) { int e = G[s][i].e; if(dist[e] > dist[s] + G[s][i].w){ dist[e] = dist[s] + G[s][i].w; q.push(e); ++updateTimes[e]; if(updateTimes[e] >= n) return true; } } } return false; }
相关文章推荐
- POJ3259 Wormholes(最短路,有无负环,spfa,模板)
- Wormholes( POJ 3259)(Bellman-Ford+SPFA)(判断是否有负权环)(最短路模板)
- 最短路 SPFA模板
- 【模板】【最短路】【Dijkstra+Heap,SPFA】
- (模板题)sdut 2143 图结构练习——最短路径(SPFA求最短路)
- poj 1511 Invitation Cards 最短路SPFA(模板题)
- 最短路 SPFA模板
- 最短路【SPFA】算法模板
- Aizu 2249Road Construction 单源最短路变形 spfa模板改写
- UVA11090 Going in Cycle!! (二分+SPFA判断有无负权)
- 最短路spfa dijkstra模板
- 蓝桥杯训练 最短路 (SPFA模板 vector)
- Floyd,Dijkstra,SPFA模板整理(以[HDU2544-最短路]为例 )
- 最短路~spfa模板
- 最短路模板(Dijkstra & Dijkstra算法+堆优化 & bellman_ford & 单源最短路SPFA)
- hdu2680 Choose the best route(spfa求最短路模板题)
- Hdu 2544 最短路 (Dijkstra+SPFA+Floyd模板)
- POJ 2447 Remmarguts' Date【k短路 SPFA+A* 模板题】
- 个人模板 最短路SPFA
- hdu 3790 最短路spfa模板