Cod sursa(job #847167)

Utilizator ephgstefana gal ephg Data 3 ianuarie 2013 14:47:15
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
#include<iostream>
using namespace std;

#define BM 30005
#define x first
#define y second
typedef pair<int,int> per;
typedef vector<per>::iterator it;

vector<per>gr[BM];
queue <int>c;
int n,m,X,Y,aj[BM];

int bfs(){
	c.push(X);
	aj[X]=1;
	int fr;
	for(;!c.empty();c.pop()){
		fr=c.front();
		for(it i=gr[fr].begin();i!=gr[fr].end();++i){
			if(aj[i->x]==0){
				aj[i->x]=aj[fr]+i->y;
				if(i->x==Y){
					return aj[i->x];
				}
				c.push(i->x);
			}
		}
	}
}
int main (){
	int i,a,b,d;
	ifstream f("sate.in");
	ofstream g("sate.out");
	f>>n>>m>>X>>Y;
	for(i=1;i<=m;++i){
		f>>a>>b>>d;
		gr[a].push_back(make_pair(b,d));
		gr[b].push_back(make_pair(a,-d));
	}
	g<<(bfs()-1);
	return 0;
}