Cod sursa(job #712117)

Utilizator mihaibogdan10Mihai Bogdan mihaibogdan10 Data 13 martie 2012 04:32:06
Problema Sate Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;

struct edge{int v, d;};
int n, m, x, y, d[30000], viz[30000];
vector <edge> G[30000];
queue <int> q;

int main(){
	freopen("sate.in", "r", stdin), freopen("sate.out", "w", stdout);
	scanf("%d %d %d %d", &n, &m, &x, &y);
	int i, a, b, l;
	
	for (i = 0; i < m; i++)
		scanf ("%d %d %d", &a, &b, &l),
		G[a].push_back((edge) {b, l}),
		G[b].push_back((edge) {a, -l});
		
	q.push(x);
	while (!q.empty()){
		a = q.front(), q.pop();
		for (i = 0; i < G[a].size(); i++){
			b = G[a][i].v;
			if (viz[b] == 0) viz[b] = 1, q.push(b);
			d[b] = d[a] + G[a][i].d;
		}
	}
	
	printf("%d", d[y]);
}