Pagini recente » Cod sursa (job #1336513) | Cod sursa (job #2656010) | Cod sursa (job #364423) | Cod sursa (job #2873608) | Cod sursa (job #449283)
Cod sursa(job #449283)
#include <cstdio>
#define NMAX 30050
struct nod {
int v, d;
nod *next;
};
nod *G[NMAX], *aux;
int Q[NMAX], dist[NMAX], N, M, X, Y, i, x, y, d, p, u, nod_p, nod_v;
int main() {
FILE *f = fopen("sate.in", "r");
FILE *g = fopen("sate.out", "w");
fscanf(f, "%d %d %d %d", &N, &M, &X, &Y);
for (i = 1; i <= M; i++) {
fscanf(f, "%d %d %d", &x, &y, &d);
aux = new nod;
aux -> v = y, aux -> d = d;
aux -> next = G[x], G[x] = aux;
aux = new nod;
aux -> v = x, aux -> d = d;
aux -> next = G[y], G[y] = aux;
}
Q[1] = X;
for (p = u = 1; p <= u; p++) {
nod_p = Q[p];
for (aux = G[nod_p]; aux != NULL; aux = aux -> next) {
nod_v = aux -> v;
if (!dist[nod_v]) {
Q[++u] = nod_v;
if (nod_v > nod_p)
dist[nod_v] = dist[nod_p] + aux -> d;
else
dist[nod_v] = dist[nod_p] - aux -> d;
if (nod_v == Y) {
p = u + 1; break;
}
}
}
}
fprintf(g, "%d", dist[Y]);
fclose(f); fclose(g);
return 0;
}