Cod sursa(job #1117430)

Utilizator drobertDumitru Robert drobert Data 23 februarie 2014 15:17:27
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin( "sate.in" );
ofstream cout( "sate.out" );

int n, m, sta, end, viz[ 30001 ];
int c[ 1000001 ], prim, ultim;
vector< pair< int,int > > g[ 30001 ];

int main()
{
	cin >> n >> m >> sta >> end;
	for ( int i = 1; i <= m; i++ )
	{
		int x, y, d;
		cin >> x >> y >> d;
		g[ x ].push_back( make_pair( y,d ) );
		g[ y ].push_back( make_pair( x,d ) );
	}
	c[ 0 ] = sta;
	while ( prim <= ultim && !viz[ end ] )
	{
		int nod = c[ prim++ ];
		for ( int i = 0; i < g[ nod ].size(); i++ )
			if ( !viz[ g[ nod ][ i ].first ] )
			{
				if ( g[ nod ][ i ].first > nod )
					viz[ g[ nod ][ i ].first ] = viz[ nod ] + g[ nod ][ i ].second;
				else viz[ g[ nod ][ i ].first ] = viz[ nod ] - g[ nod ][ i ].second;
				c[ ++ultim ] = g[ nod ][ i ].first;
			}
	}
	cout << viz[ end ];
}