Cod sursa(job #1007235)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 8 octombrie 2013 16:43:07
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<cstdio>
using namespace std;
#define nmax 50002
#define mmax 250002
#define inf 2000000000
struct muchie
{
    long x,y,c;
}g[mmax];
long d[nmax],n,m;
int main()
{
    long i,x,y,c,ok;
    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(x==1)
        d[y]=c;
    }
    for(i=2;i<=n;i++)
    if(!d[i])
    d[i]=inf;
    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);
    for(i=2;i<=n;i++)
    if(d[i]!=inf)
    printf("%ld ",d[i]);
    else
    printf("0");
}