Cod sursa(job #435547)

Utilizator MciprianMMciprianM MciprianM Data 7 aprilie 2010 16:31:00
Problema Algoritmul Bellman-Ford Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
# include <fstream>

using namespace std;

//standard Bellman Ford algorithm
//supposed to obtain 35p.

int x [ 250001 ], y [ 250001 ], c [ 250001 ], dist [ 50001 ];
const int inf = 2000000001;

int main(){

	ifstream f ( "bellmanford.in" );
	ofstream g ( "bellmanford.out" );

	int n, m, i, j;

	f >> n >> m;
	for ( i = 0; i < m; ++ i )
		f >> x [ i ] >> y [ i ] >> c [ i ];

	f . close ();

	for ( i = 2; i <= n; ++ i )
		dist [ i ] = inf;

	for ( i = 1; i < n; ++ i )
		for ( j = 0; j < m; ++ j )
			if ( dist [ y [ j ] ] > dist [ x [ j ] ] + c [ j ] )
				dist [ y [ j ] ] = dist [ x [ j ] ] + c [ j ];

	for ( j = 0; j < m; ++ j )
		if ( dist [ y [ j ] ] > dist [ x [ j ] ] + c [ j ] ){
			g << "Ciclu negativ!\n";
			g . close ();
			return 0;
		}

	for ( i = 2; i <= n; ++ i )
		g << dist [ i ] << ' ';
	g << '\n';
	g . close ();

	return 0;

}