Cod sursa(job #110670)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 noiembrie 2007 11:35:03
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>
#include<fstream.h>
#include <vector>
#define NMAX 30000
#define ps push_back
#define sz size()

using namespace std;

vector<int> a[NMAX+3], d[NMAX+3];
int n, m;
int x, y;
int dist;
short int uz[NMAX+3];

void read()
{
	int i;
	int j, k, l;
	ifstream in("sate.in");
	in>>n>>m>>x>>y;
	for(i = 0; i < m; ++i)
	{
		in>>j>>k>>l;
		
		a[j].ps(k);
		d[j].ps(l);

		a[k].ps(j);
		d[k].ps(l);
	}

}
ofstream out("sate.out");
void df(int nod)
{

	if(nod == y)
	{
		out<< dist;
		exit(0);
	}
	int i, aux = a[nod].sz;

	for(i = 0; i < aux; ++i)
	{
		if(uz[ a[nod][i] ])
			continue;

		uz[ a[nod][i] ] = 1;
		
		if(a[nod][i] < nod)
		{
			dist -= d[nod][i];
			
			df(a[nod][i]);
	
			dist += d[nod][i];
		}
		else
		{
			dist += d[nod][i];

			df(a[nod][i]);

			dist -= d[nod][i];
		}
	}
}
	
int main()
{
    read();

    if(x > y)
    {
         int aux = x;
         x = y;
         y = aux;
    }

    uz[x] = 1;
	df(x);

	return 0;
}