Cod sursa(job #669145)

Utilizator raduiris94Alexa Radu raduiris94 Data 26 ianuarie 2012 10:41:52
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>
#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;
	queue<int> q;
	q.push(nod);
	while(!q.empty())
	{
		nod=q.front();
		q.pop();
		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;
				q.push(v[nod][i].dest);
			}
		}
	}
}

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;
}