Cod sursa(job #812265)

Utilizator andreea29Iorga Andreea andreea29 Data 13 noiembrie 2012 18:36:18
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<vector>
#define Nmax 30010
using namespace std;
int i, n, m, x, y, el, cost, p, k, c[Nmax], viz[Nmax], nivel[Nmax], a, b, d, start;
vector <pair <int, int> > muchie[Nmax];
void BFS (int nod)
{
	for (i = 1; i <= n; ++i)
		viz[i] = 0;
	viz[nod] = 1;
	k = 1;
	p = 1;
	c[k] = nod;
	while (p <= n)
	{
		start = c[p];
		p++;
		for (i = 0; i < muchie[start].size(); ++i)
		{
			el = muchie[start][i].first;
			cost = muchie[start][i].second;
			if (!viz[el])
			{
				viz[el] = 1;
				k++;
				c[k] = el;
				nivel[el] = nivel[start] + cost;
			}
		}
	}
}

int main()
{
	ifstream f("sate.in");
	ofstream h("sate.out");
	f >> n >> m >> x >> y;
	for (i = 1; i <= m; ++i)
	{
		f >> a >> b >> d;
		muchie[a].push_back(make_pair(b, d));
		muchie[b].push_back(make_pair(a, -d));
	}
	f.close();
	BFS (x);
	h << nivel[y] << '\n';
	h.close();
	return 0;
}