Cod sursa(job #69502)

Utilizator damaDamaschin Mihai dama Data 3 iulie 2007 12:37:50
Problema Sate Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <vector>

using namespace std;

vector<int> v[32768], c[32768];
int n, m, start, end, used[32768], total;
bool ok;

void dfs(int);

int main()
{
	freopen("sate.in","r",stdin);
	freopen("sate.out","w",stdout);

	int i, a, b, cost;

	scanf("%d%d%d%d", &n, &m, &start, &end);

	for(i = 1; i <= n; ++i)
	{
		scanf("%d%d%d", &a, &b, &cost);
		v[a].push_back(b);
		c[a].push_back(cost);
		v[b].push_back(a);
		c[b].push_back(-cost);
	}

	dfs(start);
	return 0;
}

void dfs(int nod)
{
	int i;
	used[nod] = 1;
	for(i = 0; i < v[nod].size() && !ok; ++i)
	{
		if(!used[v[nod][i]])
		{
			total += c[nod][i];
			if(v[nod][i] == end)
			{
				ok = true;
				printf("%d\n", total);
				return;
			}
			else
			{
				dfs(v[nod][i]);
				total -= c[nod][i];
			}
		}
	}
}