解决含负权边的带权有向图的单源最短路径问题,也可以判断其中是否有负权值回路
不能处理带负权边的无向图(因可以来回走一条负权边) ,
要求图中不能包含权值总和为负值回路(负权值回路)
示例:
(1)
3 3 1
1 2 2
1 3 4
2 3 1
3 1 3
(2)
3 2 1
1 2 3
2 3 4
3 1 8
#include <iostream>
#include<vector>
#include<string.h>
using namespace std;
#define MAXL 1000
#define INF 1<<30
int dist[MAXL];
int n;//顶点数
struct edge {
int s, e, w;//start,end,weight
edge(int a, int b, int c) {
s = a; e = b; w = c;
}
edge() {
}
};
vector<edge> E;
bool bellman_ford(int root) {
//源为root
for (int