Cod sursa(job #867661)

Utilizator deea101Andreea deea101 Data 29 ianuarie 2013 23:05:15
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#include <vector>
#include <list>
#include <math.h>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector < pair< int, int> >vec[30001];
list <int> coada;
int n,m,a,b,viz[30001],d[30001];
int main()
{
	int x,y,i,j,c,sgn;
	f>>n>>m>>a>>b;
	for(i=1;i<=m;i++)
	{
		f>>x>>y>>c;
		vec[x].push_back(make_pair(y,c));
		vec[y].push_back(make_pair(x,c));
	}
	coada.push_back(a); viz[a]=1;
	while(!coada.empty())
	{
		x=*coada.begin();
		if(x==b) { g<<abs(d[b]); break;}
		for(i=0;i<vec[x].size();i++)
		{
			if(!viz[vec[x][i].first])
			{
				coada.push_back(vec[x][i].first);
				viz[vec[x][i].first]=1;
				sgn=1; if(vec[x][i].first>x) sgn=-1;
				d[vec[x][i].first]=d[x]+sgn*vec[x][i].second;
			}
		}
		coada.pop_front();
	}
	return 0;
}