Cod sursa(job #670826)

Utilizator micutuzBalog Adrian micutuz Data 30 ianuarie 2012 10:48:51
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#define DN 30005
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct cod
{
	int dest,cost;
}s;
vector<cod> v[DN];

int n,m,x,y,a,b,cost;
int viz[DN];

void bfs(int nr)
{
	int i;
	queue<int> q;
	viz[nr]=1;
	q.push(nr);
	while(!q.empty())
	{
		nr=q.front();
		q.pop();
		for(i=0;i<(int)v[nr].size();++i)
		{
			if(!viz[v[nr][i].dest])
			{
				viz[v[nr][i].dest]=viz[nr]+v[nr][i].cost;
				q.push(v[nr][i].dest);
			}
		}
	}
}

int main()
{
	int aux;
	fin>>n>>m>>x>>y;
	for( int i=0;i<m;++i)
	{
		fin>>a>>b>>cost;
		if(a>b)
		{
			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;
}