Cod sursa(job #652844)

Utilizator ELHoriaHoria Cretescu ELHoria Data 26 decembrie 2011 16:15:37
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <queue>
#include <vector>
#define PII pair<int,int>
#define st first
#define nd second
#define MP make_pair

using namespace std;

vector< PII > G[30002];

ifstream fin("sate.in");
ofstream fout("sate.out");

int N , M , X ,Y , D[30002];

int bfs()
{
	queue<int> Q;
	int nod;
	Q.push(X);
	while(!Q.empty())
	{
		nod = Q.front() , Q.pop();
		for(vector< PII >::const_iterator w = G[nod].begin();w!=G[nod].end();++w)
			if(D[w->st] == 0 && w->st!=X)
				D[w->st] = D[nod] + w->nd , Q.push(w->st);
	}
	return D[Y];
}

void read_data()
{
	int a , b , c;
	fin>>N>>M>>X>>Y;
	for(;M;M--)
	{
		fin>>a>>b>>c;
		G[a].push_back(MP(b,c));
		G[b].push_back(MP(a,-c));
	}

}

int main()
{
	read_data();
	fout<<bfs()<<'\n';
	return 0;
}