#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=(1<<25);
struct Graph
{
int s,t,w;//s->t=w;
};
Graph edge[5201];
int dis[501];
int V,E;//点数[1-n] 边数[0-E)
bool bellman_ford(int s0)//原点
{
for(int i=1;i<=V;i++)
dis[i]=INF; dis[s0]=0;
for(int i=1;i<=V-1;i++)
for(int j=0;j<E;j++)
if(dis[edge[j].t]>dis[edge[j].s]+edge[j].w)
dis[edge[j].t]=dis[edge[j].s]+edge[j].w;
for(int j=0;j<E;j++)
if(dis[edge[j].t]>dis[edge[j].s]+edge[j].w)
return false;
return true;
}
本文介绍了一种使用C++实现的Bellman-Ford算法,该算法能够有效地检测加权图中的负权重环并找到从单源到所有其他顶点的最短路径。通过结构化的边定义和迭代松弛步骤来确保正确性和效率。
1069

被折叠的 条评论
为什么被折叠?



