Cod sursa(job #1318338)

Utilizator dica69Alexandru Lincan dica69 Data 15 ianuarie 2015 21:07:59
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#define inf 50000001
struct muchie{int x;int y;int cost;}v[250001];

using namespace std;
int N,M;
int d[50001];
int main()
{

    int i,ok;
    FILE *f=fopen("dijkstra.in","r");
    FILE *g=fopen("dijkstra.out","w");
    fscanf(f,"%d %d",&N,&M);
    d[1]=0;
    for(i=1;i<=M;i++)
    {
        fscanf(f,"%d %d %d",&v[i].x,&v[i].y,&v[i].cost);
        if(v[i].x==1)d[v[i].y]=v[i].cost;
    }
    for(i=2;i<=N;i++)if(!d[i])d[i]=inf;
    ok=0;
    while(!ok)
    {
        ok=1;
        for(i=1;i<=M;i++)
        if(d[v[i].y]>d[v[i].x]+v[i].cost)
        {
            ok=0;
            d[v[i].y]=d[v[i].x]+v[i].cost;
        }
    }
    for(i=2;i<=N;i++)
    if(d[i]!=inf)
    fprintf(g,"%d ",d[i]);
    else fprintf(g,"%d ",0);
    fclose(f);
    fclose(g);
    return 0;
}