【最短路】Bellman-ford算法

今天看啊哈算法搞懂了Bellman-ford算法,其实核心代码只有四行,还是蛮简单的,写了一个板子,代码分析容后再议

(我才不是想水博客呢……)

#include <iostream>
#define MAXN 501
#define INF 1e7
using namespace std;
int n,m,start,end;//点数,边数,起点,终点 
int map[MAXN][MAXN];
int vis[MAXN];
int u[MAXN],v[MAXN],w[MAXN];

void bellmanford(){
    for(int i = 0; i < n - 1; i++){//遍历点 - 1 
        for(int j = 0; j < m; j++){//遍历边 
            if(vis[v[j]] > vis[u[j]] + w[j])
                vis[v[j]] = vis[u[j]] + w[j];
        }
    }
}

int main(){
    int x,y,dis;
    
    cin>>n>>m;//>>start>>end;//输入图的信息 
    for(int i = 0; i < m; i++){
        cin>>u[i]>>v[i]>>w[i];
    }
    
    for(int i = 0; i < n; i++){//初始化vis数组 
        vis[i] = INF;
    }
    vis[0] = 0;
    
    bellmanford();//放大招 
    
    for(int i = 0; i < n; i++){//输出 
        cout<<vis[i]<<" ";
    }
    return 0;
}

 

    原文作者:Bellman - ford算法
    原文地址: https://blog.csdn.net/I_HOPE_SOAR/article/details/83096042
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞