最短路 bellman-ford
2014-04-06 23:04
190 查看
1.bellman-ford
用于解决单源不含负权回路最短路问题
用于解决单源不含负权回路最短路问题
//1.bellman-ford //用于解决单源不含负权回路最短路问题 //代码摘自《入门经典》 //复杂度 O(nm) //将 第0个定点 到第n 个点的距离保存在 数组 d[] 中 //注意 编号从 0 开始 0 是起点 /*begin*/ /*应包含 #include<queue> #include<cstring> */ /*输入时做如下初始化 fr(i,0,n-1)f1[i]=-1; fr(e,0,m-1) { scanf("%d%d%d", &u[e], &v[e], &w[e]); next[e] = first[u[e]]; first[u[e]] = e; } */ const int inf=1<<30;//正无穷 const int maxn=1000;//点数 const int maxm=10000;//边数 int n,m;// 点数 边数 int f1[maxn], d[maxn]; int u[maxm], v[maxm], w[maxm], next[maxm];// u v w 邻接表 typedef pair<int,int> pii; void bellmanford() { queue<int>q; bool inq[maxn]; fr(i,0,n-1)d[i]=(i==0>0:inf); ms(inq,0); q.push(0); while(!q.empty()) { int x=q.front(); q.pop(); inq[x]=0; for(int e=f1[x];e!=-1;e=next[e]) { if(d[v[e]] > d[x]+w[e]) { d[v[e]]=d[x]+w[e]; if(!inq[v[e]]) { inq[v[e]]=1; q.push(v[e]); } } } } } /*end*/
相关文章推荐
- 图论: bellman_ford 求单源最短路…
- ACM:最短路,dijkstra,邻接表的建立,使用邻接表跟优先队列的dijkstra,Bellman-Ford,Floyd。。
- ACM模板 Bellman_Ford,单源最短路,图论
- poj - 3259 Wormholes (bellman-ford算法求最短路)
- 最短路 SPFA (对于bellman-ford 的优化)
- 暑假-最短路(Bellman-ford、spfa)-A - Arbitrage
- POJ 1860(最短路之Bellman-Ford)
- UVA 10986 - Sending email(最短路 优先队列的优化+Bellman-Ford)
- 算法-从动态规划到贪心算法,Bellman-Ford和Dijkstra算法求解最短路
- poj 2240(bellman_ford 算法)(最短路负权)Arbitrage
- [ACM] hdu 1217 Arbitrage (bellman_ford最短路,判断是否有正权回路或Floyed)
- Bellman Ford+SPFA队列优化(路径还原 输出最短路的路径)
- HDU 2544 最短路(四种写法:Floyd、Dijkstra、Bellman-Ford、SPFA)
- 暑假-最短路(Bellman-ford、spfa)-F - Wormholes
- poj 1860 2378 3259带负边最短路 ** bellman ford 模板
- 最短路~bellman-ford
- Wormholes(最短路_bellman_ford)
- 最短路问题(4种方法)(邻接矩阵,邻接表,bellman-ford,spfa)
- hdu2544 -最短路(Bellman-Ford)
- SPFA or bellman ford松弛法--单源最短路