Cod sursa(job #650092)

Utilizator johnny2008Diaconu Ion johnny2008 Data 17 decembrie 2011 12:59:38
Problema Algoritmul Bellman-Ford Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
#define maxn 250001
#define pb push_back
vector <int> vec[maxn];
vector <int> cost[maxn];
vector <int> q;
int d[50001];
int n,m;
int main(){
	ifstream fi("bellmanford.in");
	ofstream g("bellmanford.out");
	fi>>n>>m;
	int i,j;
	for(i=1;i<=m;i++){
		int a,b,c;
		fi>>a>>b>>c;
		vec[a].pb(b);
		cost[a].pb(c);
		
		if(i<=m)
			d[i]=100000;
	}
	d[1]=0;
	q.pb(1);
	int f=0,l=0;
	while(f<=l){
		int nod=q[f];
		for(i=0;i<vec[nod].size();i++){
			if(d[vec[nod][i]]>d[nod]+cost[nod][i]){
				d[vec[nod][i]]=d[nod]+cost[nod][i];
				q.pb(vec[nod][i]);
				l++;
			}
		}
		if(f>n){
			g<<"Ciclu negativ!";
			return 0;
		}
		f++;
	}	
	for(i=2;i<=n;i++){
		g<<d[i]<<" ";
	}
	return 0;
}