Cod sursa(job #867020)

Utilizator TeOOOVoina Teodora TeOOO Data 28 ianuarie 2013 23:35:32
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
using namespace std;

FILE *in,*out;

const int inf=(1<<30)-1;

struct arc
{
    int x,y,cost;
}v[250001];

int m,i,D[50001],ok=1,n;

int main ()
{
    in=fopen("dijkstra.in","rt");
    out=fopen("dijkstra.out","wt");

    fscanf(in,"%d%d",&n,&m);

    for(i=2;i<=n;++i)
        D[i]=inf;
    for(i=1;i<=m;++i)
    {
        fscanf(in,"%d%d%d",&v[i].x,&v[i].y,&v[i].cost);
        if(v[i].x==1)
            D[v[i].y]=v[i].cost;
    }
    while(ok)
    {
        ok=0;
        for(i=1;i<=m;++i)
        {
            if(D[v[i].x]!=inf && D[v[i].y]>D[v[i].x]+v[i].cost)
            {
                D[v[i].y]=D[v[i].x]+v[i].cost;
                ok=1;
            }
        }
    }
    for(i=2;i<=n;++i)
        fprintf(out,"%d ", (D[i]>=inf) ? 0 : D[i]);
    return 0;
}