(模板)解决带负权最短路径 Bellman-ford 与 SPFA(前者的队列优化)
// 模板记录 // Bellman-ford O(V*E) s到每个点的最短路 1 #include<cstdio> 2 #define INF 0x3f3f3f3f 3 const int MAXN = 100+5; 4 const int MAXM = 10000+5; 5 6 struct node { 7 int u, v, w; 8 } edge[MAXM]; 9 10 int n, m, x;// 点的数量,边的数量,源点 11 int dis[MAXN]; 12 13 bool Bellman_ford() { 14 for(int i = 0; i < n-1; ++i) { 15 for(int j = 0; j != m; ++j) { 16 if(dis[edge[j].v] > dis[edge[j].u] + edge[j].w) { 17 dis[edge[j].v] = dis[edge[j].u] + edge[j].w; 18 } 19 } 20 } 21 bool flag = true; 22 for(int i = 0; i != m; ++i) { 23 if(dis[edge[i].v] > dis[edge[i].u] + edge[i].w) { 24 flag = false; 25 break; 26 } 27 } 28