Cod sursa(job #660645)

Utilizator federerUAIC-Padurariu-Cristian federer Data 13 ianuarie 2012 11:58:58
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#define Nmax 1001
using namespace std;

long long v[Nmax][Nmax], c[Nmax][Nmax], n, m, i, start, x, y;
long long viz[Nmax], cost[Nmax], C[Nmax], d, stop;
ifstream fin("sate.in");
ofstream fout("sate.out");

void BFS()
{
	int ultim, prim;
	ultim=prim=0;
	C[0]=start;
	viz[start]=1;
	while(prim<=ultim)
	{
		x=C[prim++];
		for(i=1;i<=v[x][0];i++)
			if(!viz[v[x][i]])
			{
				viz[v[x][i]]=1;
				C[++ultim]=v[x][i];
				if(v[x][i]>x)
					cost[v[x][i]]=cost[x]+c[x][v[x][i]];
				else
					cost[v[x][i]]=cost[x]-c[x][v[x][i]];
				if(v[x][i]==stop)
					prim=ultim+1;
			}
	}
}

int main()
{
	fin>>n>>m>>start>>stop;
	for(i=1;i<=m;i++)
	{
		fin>>x>>y>>d;
		v[x][++v[x][0]]=y;
		v[y][++v[y][0]]=x;
		c[x][y]=c[y][x]=d;
	}
	BFS();
	fout<<cost[stop]<<'\n';
	fin.close();
	fout.close();
	return 0;
}