您的位置:首页 > 其它

Bellman_ford最短路

2015-04-08 00:09 176 查看
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
#define inf 0x3f3f3f3f
const int maxn = 200;
int n, m, pre[maxn], edge[maxn * maxn][3];
int dist[maxn];
bool relax(int u, int v, int c){
if(dist[v] > dist[u] + c){
dist[v] = dist[u] + c; pre[v] = u;
return true;
}
return  false;
}
int bellman(int S){
int i, j;
for(i = 0; i < n; i ++){
dist[i] = inf;
pre[i] = -1;
}
dist[S] = 0;
bool flag;
for(i = 1;i < n; i ++){
flag = false;
for(j = 0; j < m; j ++)
if(relax(edge[j][0], edge[j][1], edge[j][2])) flag = true;
if(!flag) break;
}
for(j = 0; j < m; j ++)
if(relax(edge[j][0], edge[j][1], edge[j][2])) return false;
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: