1. 程式人生 > >Bellman-Ford【模板】

Bellman-Ford【模板】

Bellman-Ford

具體程式碼:

#include <iostream>
#include <cstdio>

using namespace std;

const int inf = 1e9 + 7;
const int N = 23570;

int u[N],v[N],w[N];
int dis[N],n,m,s,k; 
bool vis[N],check;

int main()
{
	scanf("%d%d%d",&n,&m,&s);
	for(int i = 1; i <= m; i ++)
		scanf
("%d%d%d",&u[i],&v[i],&w[i]); for(int i = 1; i <= n; i ++) dis[i] = inf; dis[s] = 0; for(int k = 1; k < n; k ++) { check = 0; for(int i = 1; i <= m; i ++) { if(dis[v[i]] > dis[u[i]] + w[i]) { dis[v[i]] = dis[u[i]] + w[i]; check = 1; } } if(check ==
0) break; } for(int i = 1; i <= n; i ++) printf("%d ",dis[i]); return 0; }

PS:《啊哈演算法》上有詳細講解。