Cod sursa(job #1504208)

Utilizator VladuZ1338Vlad Vlad VladuZ1338 Data 17 octombrie 2015 15:10:55
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

ifstream fin ("sate.in");
ofstream fout ("sate.out");

int n, m, si, sf, i, x, y, c, ct, viz[30001], xi, xc;
queue <int> Q;

struct nod
{
	int info;
	int dist;
	nod *urm;
};
nod *a[30001];

void add (nod *&prim, int x, int c)
{
	nod *p = new nod;
	p->info=x;
	p->dist=c;
	p->urm=prim;
	prim=p;
}

void BFS (int xi)
{
	nod *p;
	Q.push(xi); viz[xi]=1;
	while (!Q.empty())
	{
		xc=Q.front(); Q.pop();
		for (p=a[xc]; p!=0; p=p->urm)
		{
			if (viz[p->info]==0)
			{
				viz[p->info]=1;
				Q.push(p->info);
				if (xc<p->info) ct+=p->dist;
				else ct-=p->dist;
				if (p->info==sf) break;
			}
		}
	}
}

int main()
{
	fin >> n >> m >> si >> sf;
	for (i=1; i<=m; i++)
	{
		fin >> x >> y >> c;
		add (a[x], y, c);
		add (a[y], x, c);
	}
	BFS(si);
	fout << ct;
}