Cod sursa(job #1148025)

Utilizator rucarRucareanu Alexandru rucar Data 20 martie 2014 12:57:38
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <queue>
using namespace std;

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

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