Cod sursa(job #1805514)

Utilizator ana-maria.simiAna-Maria Simionescu ana-maria.simi Data 13 noiembrie 2016 22:07:11
Problema Algoritmul lui Dijkstra Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#define INF 100000
using namespace std;
long long n,p,X,Y,C,m,D[50001],i,ok;
struct graf{int x,y,c;} G[250001];
int main()
 {  freopen("dijkstra.in", "r", stdin);
    freopen("dijkstra.out", "w", stdout);
    scanf("%ld%ld", &n, &m);
    for(i=1; i<=m; i++)
        {scanf("%ld%ld%ld", &X, &Y, &C);
        G[i].x=X;
        G[i].y=Y;
        G[i].c=C;
        if(1==X)
            D[Y]=C;
        if(i>=2 && i<=n)
            D[i]=INF;}
    ok=i;
    for(i=ok; i<=n; i++)
        D[i]=INF;
    ok=0;
    do{
        ok=1;
        for(i=1; i<=m; i++)
            if(D[G[i].y]>D[G[i].x]+G[i].c)
                {D[G[i].y]=D[G[i].x]+G[i].c;
                ok=0;}
    }while(ok==0);
    for(i=2; i<=n; i++)
        if(D[i]!=INF)
            printf("%ld ", D[i]);
            else
                printf("0 ");

    return 0;
 }