int relax(int a,int b,int val)
{
if(dis[b]>dis[a]+val)
{
dis[b]=dis[a]+val;
path[b]=a;
return 1;
}
return 1;
}
int Bellman()
{
for(int i=1;i<=N;i++)
{
dis[i]=inf;
}
dis[sta]=0;
for(int i=1;i<N;i++)
{
int temp=0;
for(int j=1;j<=M;j++)//无向图的话 是2*M
{
if(relax(e[j][0],e[j][1],e[j][2]))
temp=1;
}
if(!temp)
break;
}
for(int i=1;i<=M;i++)
{
if(relax(e[i][0],e[i][1],e[i][2]))
flag=1;
}
return dis[end];
}
Bellman()算法
最新推荐文章于 2022-01-15 14:44:18 发布