关于 Bellman-ford算法

· 单源最短路算法

· 可以处理负边权,甚至可以处理有负环的情况

· 对每一条边额外进行一次松弛,如果松弛成功,即 dis[u]+w(u,v)<dis[v] 成立,则图中存在负环路,也就是说该图无法求出单源最短路径

· 适合稀疏图

· 如果有负权回路,短路不一定存在

 

void bellman_ford()
{
    for(int i=1; i<=n; i++)
        dis[i]=INF;
    dis[s]=0;
    for(int i=1; i<=n; i++)//=n用来判断负环
    {
        for(int j=1; j<m; j++)
        {
            if(dis[e[j].u]!=INF && dis[e[j].v]>dis[e[j].u]+e[j].w)
            {
                dis[e[j].v]=dis[e[j].u]+e[j].w;
                if(i==n) return true;//判断负环
            }
        }
    }
    return false;
}

 

posted @ 2022-04-27 17:27  爱吃虾滑  阅读(22)  评论(0编辑  收藏  举报