Cod sursa(job #651595)

Utilizator KoniacDocea Andrei Koniac Data 20 decembrie 2011 21:48:24
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>
#define lim 30005

using namespace std;

const char InFile[]="sate.in";
const char OutFile[]="sate.out";

ifstream fin(InFile);
ofstream fout(OutFile);

struct cod{int dest,cost;};
vector<cod> v[lim];
cod s;
int n,m,x,y,a,b,cost;
int viz[lim];

void bfs(int nod){
	viz[nod]=1;
	int t,p;
	t=nod;
	p=1;
	while(p)
	{
		nod=t;
		p=0;
		for( int i=0;i<(int)v[nod].size();++i)
		{
			if(!viz[v[nod][i].dest])
			{
				viz[v[nod][i].dest]=viz[nod]+v[nod][i].cost;
				t=v[nod][i].dest;
				p=1;
			}
		}
	}
}

int main()
{
	fin>>n>>m>>x>>y;
	for( int i=0;i<m;++i)
	{
		fin>>a>>b>>cost;
		if(a>b){
			int aux=a;
			a=b;
			b=aux;
		}
		s.cost=cost;
		s.dest=b;
		v[a].push_back(s);
		s.cost=-cost;
		s.dest=a;
		v[b].push_back(s);
	}
	bfs(x);
	fout<<viz[y]-1;
	fin.close();
	fout.close();
	return 0;
}