【最短路】Bellman-ford演算法
阿新 • • 發佈:2018-12-15
今天看啊哈演算法搞懂了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; }