之前的单源最短路不能解决负权边的图。
代码如下:
/*Bellman-Ford 解决负权边*/
#include <stdio.h>
int main()
{
int dis[10],i,k,n,m,u[10],v[10],w[10];
int inf = 99999999;
scanf("%d%d",&n,&m);//顶点个数,边数
for(i = 1;i <= m;i++)//读入边
{
scanf("%d%d%d",&u[i],&v[i],&w[i]);
}
for(i = 1;i <= n;i++)//初始化数组
{
dis[i] = inf;
}
dis[1] = 0;
for(k = 1;k <= n-1;k++)//核心算法 松弛!
{
for(i = 1;i <= m;i++)
{
if(dis[v[i]] > dis[u[i]] +w[i])
{
dis[v[i]] = dis[u[i]] +w[i];
}
}
}
for(i = 1;i <= n;i++)
{
printf("%d ",dis[i]);
}
return 0;
}