Cod sursa(job #655297)

Utilizator noobakafloFlorin eu noobakaflo Data 2 ianuarie 2012 00:20:58
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<fstream>
using namespace std;
int A[15000][15000],vizitat[15000],T[15000];
int drum[15000],k=0,n,m,d,x,y;

void Citire()
{
	int i,j;
	fstream f("sate.in",ios::in);
	f>>n>>m>>x>>y;
	while(f>>i>>j>>d)
		A[i][j]=A[j][i]=d;
	f.close();
}


void Inversare(int nod)
{
	if(nod!=0)
	{
		Inversare(T[nod]);
		drum[k++]=nod;
	}
}
void DFS(int nod)
{
	int k;
	vizitat[nod]=1;
	for(k=1; k<=n; k++)
		if(A[nod][k]!=0 && vizitat[k]==0)
		{
			T[k]=nod;
			DFS(k);
		}
}

void Afisare()
{
	fstream g("sate.out",ios::out);
	int i,lungime=0;
	for(i=0; i<k; i++)
		if(drum[i]<drum[i+1])
			lungime=lungime+A[drum[i]][drum[i+1]];
		else
			lungime=lungime-A[drum[i]][drum[i+1]];
	g<<lungime;
	g.close();
}


int main()
{
	Citire();
	DFS(x);
	if(T[y]!=0) 
		Inversare(y);
	Afisare();
	return 0;
}