Pagini recente » Cod sursa (job #1495574) | Cod sursa (job #1129437) | Cod sursa (job #1547332) | Cod sursa (job #964372) | Cod sursa (job #1037989)
#include <stdio.h>
#define MAX_N 30005
#define MAX_M 200050
#define FIN "sate.in"
#define FOUT "sate.out"
int N, M, X, Y, D[MAX_N], E[MAX_M][3];
int main(void)
{
int i, a, b, c, ok;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d %d %d", &N, &M, &X, &Y);
for (i = 0; i < M; i++)
{
scanf("%d %d %d", &a, &b, &c);
E[i][0] = a; E[i][1] = b; E[i][2] = -c;
E[M+i][0] = b; E[M+i][1] = a; E[M+i][2] = c;
}
for (ok = 1; ok; )
{
for (ok = i = 0; i < 2*M; i++)
{
a = E[i][0], b = E[i][1], c = E[i][2];
if (D[a] > D[b]+c)
{
D[a] = D[b]+c;
ok = 1;
}
}
}
printf("%d\n", D[Y]-D[X]);
return 0;
}