Bellman-ford 模板
阿新 • • 發佈:2018-08-25
class man () inf nbsp 導致 color col eof
#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(ints,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 模板