Cod sursa(job #667949)

Utilizator informatician28Andrei Dinu informatician28 Data 23 ianuarie 2012 22:31:17
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream> 
#include<vector> 
#include<queue>
#define NMAX 30001
#define pb push_back
#define MP make_pair

using namespace std; 
ifstream in("sate.in"); 
ofstream out("sate.out"); 

int N, M, X, Y, D[NMAX];
vector< pair< int, int > > G[NMAX]; 
queue< int > Q;
//cu un vector viz iesea din timp pe un test
int BFs() 
{
	Q.push(X);  
	while(!Q.empty()) 
	{
		int nod = Q.front(); 
		Q.pop(); 
	for(vector<pair< int, int > > :: iterator it = G[nod].begin(); it != G[nod].end(); ++it) 
		if( D[it -> first] == 0 && (it -> first)!=X ) // am gasit o alta modalitate de a verifica, in loc de vect viz
		{
			D[it -> first] = D[nod] + it -> second; 
			Q.push(it -> first);
		}
	}
	return D[Y]; 
}
	
int main() 
{
	int i, x, y, c;
	in >> N >> M >> X >> Y; 
	
	for(i = 1; i <= M; i++) 
	{
		in >> x >> y >> c; 
		G[x].pb(MP(y,c));
		G[y].pb(MP(x,-c));
	}
	
	out << BFs();
}