Cod sursa(job #1148084)

Utilizator rucarRucareanu Alexandru rucar Data 20 martie 2014 13:48:38
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <queue>
#include <vector>
using namespace std;

fstream f("sate.in", ios::in);
ofstream g("sate.out");

struct per{
	int nod, dist;
};

int main()
{
	int n,m,x,y;
	f >> n >> m >> x >> y;
	vector <per> a[30011];
	int i, j, d;
	for (int k{ 0 }; k < m; k++)
	{
		f >> i >> j >> d;
		per aux{ j, d };
		a[i].push_back(aux);
		aux.nod = i;
		aux.dist = -d;
		a[j].push_back(aux);
	}
	int *dist = new int[n + 1];
	for (int i{ 0 }; i <= n; i++)
		dist[i] = 0;
	queue <int> q;
	q.push(x);
	while (!q.empty())
	{
		int varf = q.front();
		if (varf == y)
		{
			g << dist[y];
			break;
		}
		q.pop();
		for (int i{ 0 }; i < a[varf].size(); i++)
		{
			if ( !dist[a[varf][i].nod])
			{
				dist[a[varf][i].nod] = dist[varf] + a[varf][i].dist;
				q.push(a[varf][i].nod);
			}
		}
	}
	return 0;
}