您的位置:首页 > 其它

最短路——Bellman-Ford

2015-10-21 10:46 295 查看
在存在负边时,当最短路存在时可以求出来,不存在时可以检测出来。

const int maxn = 110;
const int max_int = ~(1<<31);
const int min_int = (1<<31);

int u[maxn], v[maxn], w[maxn], dist[maxn];
//[0,max_int]

int bellmanford(int s){
	for(int i = 0; i < n; ++i){
		dist[i] = max_int;
	}
	dust[s] = 0;
	for(int k = 1; k < n; ++k){
		for(int i = 0; i < m; ++i){
			int x = u[i], y = v[i];
			if(dist[x] < max_int){
				dist[y] = min(dist[y], dist[x] + w[i]);
			}
		}
	}
	for(int i = 0; i < m; ++i){
		int x = u[i], y = v[i];
		if(dist[x] < max_int && dist[y] < dist[x] + w[i]){
			return -1;
		}
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: