Cod sursa(job #1069622)

Utilizator federerUAIC-Padurariu-Cristian federer Data 30 decembrie 2013 12:43:41
Problema Sate Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.93 kb
#include<fstream>
#include<vector>
#include<queue>
#define Nmax 30001
#define pb push_back
using namespace std;
vector< pair<int, int> >G[Nmax];
queue<int>q;
int d[Nmax], viz[Nmax], i, j, n, m, a, b, cost;
int start, stop;

void drum()
{
	viz[start] = 1;
	q.push(start);
	while (!q.empty())
	{
		a = q.front();
		q.pop();
		for (i = 0; i<G[a].size(); i++)
		if (!viz[G[a][i].first])
		{
			viz[G[a][i].first] = 1;
			if (G[a][i].first>a)
				d[G[a][i].first] = d[a] + G[a][i].second;
			else
				d[G[a][i].first] = d[a] - G[a][i].second;
			q.push(G[a][i].first);
		}
	}
}

int main()
{
	freopen("sate.in", "r", stdin);
	freopen("sate.out", "w", stdout);
	scanf("%d%d%d%d", &n, &m, &start, &stop);
	for (i = 1; i <= m; i++)
	{
		scanf("%d%d%d", &a, &b, &cost);
		G[a].pb(make_pair(b, cost));
		G[b].pb(make_pair(a, cost));
	}
	drum();
	printf("%d\n", d[stop]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}