Cod sursa(job #635017)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 18 noiembrie 2011 10:38:58
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<vector>
#include<algorithm>
#define NMAX 30010

using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");

struct st
{
	int nod, c;
}r;
vector<st> a[NMAX];
int n, m, s, d, vz[NMAX], sol;

void Citeste()
{
	int i, x, y, c;
	f>>n>>m>>s>>d;
	if (s>d) swap(s, d);
	for (i=1; i<=n; ++i)
	{
		f>>x>>y>>c;
		r.nod=y; r.c=c;
		a[x].push_back(r);
		r.nod=x;
		a[y].push_back(r);
	}
}

void DFS(int nod, int sum)
{
	int it;
	
	vz[nod]=1;
	if (nod==d)
	{
		sol=sum;
		return;
	}
	for (it=0; it<a[nod].size(); ++it)
	{
		r=a[nod][it];
		if (!vz[r.nod]) 
			if (r.nod<nod) DFS(r.nod, sum-r.c);
				else DFS(r.nod, sum+r.c);
	}
}

int main()
{
	Citeste();
	DFS(s, 0);
	g<<sol<<"\n";
	f.close();
	g.close();
	return 0;
}