Cod sursa(job #505898)

Utilizator alutzuAlexandru Stoica alutzu Data 4 decembrie 2010 14:18:57
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<cstdio>
#include<vector>

using namespace std;

const int NMAX=1<<15;

vector <int> mat[NMAX];
vector <int> d[NMAX];
struct aroganta { int nod , d ; } ;

aroganta q [NMAX];

int main ( )
{
	freopen ( "sate.in", "r", stdin ) ;
	freopen ( "sate.out", "w", stdout ) ;
	
	int n , m , start , fin , i , p , u , c , x , y;
	
	scanf ( "%d%d%d%d", &n,&m, &start,&fin ) ;
	
	for ( i =1 ; i <= m ; ++ i )
	{
		scanf ( "%d%d%d", &x,&y,&c ) ;
		mat[x].push_back(y);
		d[x].push_back(c);
		mat[y].push_back(x);
		d[y].push_back(-c);
	}
	p=u=1;
	q[p].nod=start;
	q[p].d = 0 ;
	
	while ( p <= u )
	{
		int lim = mat[q[p].nod].size();
		for ( c = 0 ; c < lim ; ++c)
		{
			q[++u].nod = mat[q[p].nod][c];
			q[u].d  = q[p].d + d[q[p].nod][c] ;
			if ( q[u].nod == fin )
			{
				printf ( "%d", q[u]. d ) ;
				return 0 ;
			}
		}
		++ p ;
	}
	
	
	return 0 ;
}