Cod sursa(job #1037986)

Utilizator dragosaioaneiAioanei Dragos dragosaioanei Data 20 noiembrie 2013 21:52:31
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#define IN "sate.in"
#define OUT "sate.out"
#define NMAX 30001
#define MMAX 200050

int n,m;
int distanta[NMAX];
int matrice[MMAX][4];

int main()
{
    FILE * fin=fopen(IN,"r");
    FILE * fout=fopen(OUT,"w");

    int x,y,i,a,b,c,ok;
    fscanf(fin,"%d%d%d%d",&n,&m,&x,&y);
    for(i=1;i<=m;i++)
    {
        fscanf(fin,"%d%d%d",&a,&b,&c);
        matrice[i][1]=a; matrice[i][2]=b; matrice[i][3]=-c;
        matrice[m+i][1]=b; matrice[m+i][2]=a; matrice[m+i][3]=c;
    }

    do
    {
        ok=0;
        for(i=1;i<=2*m;i++)
        {
            if(distanta[matrice[i][1]]>distanta[matrice[i][2]]+matrice[i][3])
            {
                distanta[matrice[i][1]]=distanta[matrice[i][2]]+matrice[i][3];
                ok=1;
            }
        }
    }
    while(ok!=0);

    fprintf(fout,"%d\n",distanta[y]-distanta[x]);

    fclose(fin);
    fclose(fout);
    return 0;
}