Cod sursa(job #674124)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 5 februarie 2012 17:05:08
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
#define NMAx 30100
#define pb push_back
using namespace std;
vector <int> G[NMAx],D[NMAx];
int n,nr,X,Y,dist[NMAx],deque[NMAx];
bool viz[NMAx];
void citire() {
	
	int i,m,x,y,c;
	ifstream in("sate.in");
	in>>n>>m>>X>>Y;
	for(i=0;i<m;i++)
		{in>>x>>y>>c;
		if(x>y) c=-c;
		G[x].pb(y);
		G[y].pb(x);
		D[x].pb(c);
		D[y].pb(-c);
		}
	in.close();
	
}
int BFS()
{
	
	int i,j,m,nod,vecin,lung;
	
	if(X>Y)
		swap(X,Y);
	deque[1]=X;
	nr=1;
	
	for(i=1;i<=nr;i++) {
		nod=deque[i];
		for(j=0;j<G[nod].size();j++) {
			vecin=G[nod][j];
			if(!viz[vecin]) {
				viz[vecin]=1;
				deque[++nr]=vecin;
				dist[vecin]=dist[nod]+D[nod][j];
				if(vecin==Y)
					return dist[vecin];
				}
			}
		}
	return 0;
	
}
int main()
{
	
	citire();
	
	ofstream out("sate.out");
	out<<BFS()<<'\n';
	out.close();
	
	return 0;

}