Cod sursa(job #712121)

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

struct edge{int v, d;};
int n, m, x, y, d[30005], viz[30005];
vector <edge> G[30005];
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);
		if (a > b) swap(a, b);
		G[a].push_back((edge) {b, l});
		G[b].push_back((edge) {a, -l});
	}
		
	viz[x] = 1, 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]);
}