Bellman-ford 模板
Posted wpbing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bellman-ford 模板相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h> const int inf=0x3f3f3f3f; const int maxn=1e5+5; struct edge{ int u,v;//两个点 int w; //权值 Edge(int _u = 0, int _v = 0, int _w = 0): u(_u), v(_v), w(_w) {} }; int dis[maxn];//松弛更新数组 vector<edge>e;//用容器存边 //如果存在从源点可达的权为负的回路。则 应为无法收敛而导致不能求出最短路径 int bellman_ford(int s,int n) { memset(dis,inf,sizeof(dis)); dis[s]=0; //最多做n-1次 for(int i=1;i<n;i++) { int flag=0; for(int j=0; j<int(e.size()); j++) { if(dis[e[j].v] > dis[e[j].u] + e[j].w) { dis[e[j].v] = dis[e[j].u] + e[j].dis; flag=1; } } if(flag==0) return 1;//没有负权回路 } //有负权回路 for(int j=0; j < int(e.size()); j++) { if(dis[e[j].v] > dis[e[j].u] + e[j].w) return 0; } return 1; }
以上是关于Bellman-ford 模板的主要内容,如果未能解决你的问题,请参考以下文章
(模板)hdoj2544(最短路--bellman-ford算法)
[M最短路] lc787. K 站中转内最便宜的航班(Bellman-Ford算法模板+边数限制最短路+dp思想)