Cod sursa(job #1037989)

Utilizator dragosaioaneiAioanei Dragos dragosaioanei Data 20 noiembrie 2013 21:53:41
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#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;
}