【最短路】Bellman-ford算法

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

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

#include 
#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<

 

你可能感兴趣的:(小总结儿)