文中示例代码正如下:
//完整代码如下:头文件省略
int dis[10],u[10],v[10],w[10];
int main()
{
//freopen("*.in","r",stdin);
//freopen("*.out","w",stdout);
int i,k,n,m;
int inf=99999999; //用inf存储一个我们认为的正无穷值
cin>>n>>m;// 读入n和m,n表示顶点个数,m表示边的条数
//读入边
for(i=1;i<=m;i++)
cin>>u[i]>>v[i]>>w[i];
//初始化dis数组,这里是1号顶点到其余各个顶点的初始路程
for(i=1;i<=n;i++)
dis[i]=inf;
dis[1]=0;
//Bellman-Ford核心语句,只有四行,可以解决负边权,但不能解决负权回路,可以判定是否有负权回路
for(k=1;k<=n-1;k++) //进行n-1轮松驰
for(i=1;i<=m;i++) //枚举每一条边
if( dis[v[i]] > dis[u[i]] + w[i] ) //尝试对每一条边松驰
dis[v[i]] = dis[u[i]] + w[i]; //如果条件成立,更新dis[]数组
//输出最终结果
for(i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}