Cod sursa(job #296380)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 4 aprilie 2009 18:25:55
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#include <vector>
#include <bitset>

using namespace std;

#define pb 	push_back
#define maxN 	30010

int D[maxN], N, M, X, Y;
vector <short int> A[maxN];
vector <int> C[maxN];
bitset <maxN> viz;

void df (short int x) {
	viz[x] = 1;
	for (short int i = 0; i < (short int) A[x].size(); ++ i)
		if (!viz[A[x][i]]) {
			D[A[x][i]] = D[x] + C[x][i];
			df (A[x][i]);
		}
}
int main () {
        short int a, b;
        int c;

	freopen("sate.in", "r", stdin);
	freopen("sate.out", "w", stdout);

	scanf("%d%d%d%d", &N, &M, &X, &Y);

	for ( ; M -- ; ) {
		scanf("%hu%hu%u", &a, &b, &c);
		A[a].pb(b);
		A[b].pb(a);
		C[a].pb(c);
		C[b].pb(-c);
	}

        df (X);
	printf("%d\n", D[Y]);
}