Cod sursa(job #1259063)

Utilizator EpictetStamatin Cristian Epictet Data 9 noiembrie 2014 17:53:33
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
int N, M, X, Y, D[30010], fr[30010];
vector < pair < int, int > > V[30010];
queue < int > Q;

int BFS()
{
	Q.push(X);
	while (!Q.empty())
	{
		int nod = Q.front();
		Q.pop();
		fr[nod] = 1;
		for (vector < pair < int, int > > :: iterator it = V[nod].begin(); it != V[nod].end(); it++)
		{
			D[it->first] = D[nod] + it->second;
			if (it->first == Y)
			{
				return D[it->first];
			}
			if (!fr[it->first])
			{
				Q.push(it->first);
			}
		}
	}
}

int main()
{
	fin >> N >> M >> X >> Y;
	for (int k=1, i, j, c; k<=M; k++)
	{
		fin >> i >> j >> c;
		V[i].push_back(make_pair(j, c));
		V[j].push_back(make_pair(i, -c));
	}
	
	fout << BFS() << '\n';;
	fout.close();
	return 0;
}