Cod sursa(job #632688)

Utilizator sealTudose Vlad seal Data 12 noiembrie 2011 00:37:52
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
#include<algorithm>
#include<vector>
#define y first
#define c second
#define NMAX 30001
using namespace std;

vector< pair<int, int> > G[NMAX];
int f, stop;
bool Viz[NMAX];

void DFS(int x, int dist)
{
	Viz[x] = 1;
	if(x == f)
	{
		printf("%d\n", dist);
		stop = 1;
		return;
	}
	for(int i = 0; i < G[x].size() && !stop; ++i)
	{
		int y = G[x][i].y;
		if(Viz[y])
			continue;
		int c = G[x][i].c;
		if(y > x)
			DFS(y, dist + c);
		else
			DFS(y, dist - c);
	}
}

int main()
{
	int n, m, s;

	freopen("sate.in", "r", stdin);
	freopen("sate.out", "w", stdout);
	scanf("%d%d%d%d", &n, &m, &s, &f);

	while(m--)
	{
		int x, y, c;
		scanf("%d%d%d", &x, &y, &c);
		G[x].push_back(make_pair(y, c));
		G[y].push_back(make_pair(x, c));
	}

	if(s > f)
	{
		s = s ^ f;
		f = s ^ f;
		s = s ^ f;
	}

	DFS(s, 0);

	return 0;
}