Cod sursa(job #414117)

Utilizator georgelRector George georgel Data 9 martie 2010 18:52:33
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#define Max 300025

using namespace std;

ofstream fout("sate.out");
int n,m,x,y,k,t[3][Max],start[Max],pus[Max],b[Max];
long long drum[Max];

void read()
{
	ifstream fin("sate.in");
int i,o1,o2,d;
fin>>n>>m>>x>>y;
for(i = 1; i <= m; i++)
{
	fin>>o1>>o2>>d;
	k++;
	t[0][k] = o2;
	t[1][k] = start[o1];
	start[o1] = k;
	t[2][k] = d;
	k++;
	t[0][k] = o1;
	t[1][k] = start[o2];
	start[o2] = k;
	t[2][k] = -d;
}
fin.close();
}
void bf(int x)
{
	int nod,st,dr;
	st = 1;
	dr = 1;
	pus[x] = 1;
	b[st] = x;
	while(st <= dr)
	{
		nod = start[b[st]];
		while(nod != 0)
		{
			if(!pus[t[0][nod]])
			{
			dr++;
			b[dr] = t[0][nod];
			pus[b[dr]] = 1;
			drum[dr] = drum[st]+t[2][nod];
			}
			nod = t[1][nod];
		}	
		
		st++;
	}
	fout<<drum[st-1]<<"\n";
}
int main()
{
	//int i;
	read();
	bf(x);

fout.close();
return 0;

}