Cod sursa(job #1007228)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 8 octombrie 2013 16:31:41
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
using namespace std;
#define dim 50002
#define inf 2000000000
struct muchie
{
    long x,y,c;
};
muchie a[250002];
long d[dim],n,m;
int main()
{
    long x,y,c,ok;
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(long i=1;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&c);
        a[i].x=x;
        a[i].y=y;
        a[i].c=c;
        if(x==1)
        d[y]=c;
    }
    for(long i=2;i<=n;i++)
    if(!d[i])
    d[i]=inf;
    do
    {
        ok=1;
        for(long i=1;i<=m;i++)
        if(d[a[i].y]>d[a[i].x]+a[i].c)
        {
            d[a[i].y]=d[a[i].x]+a[i].c;
            ok=0;
        }

        }while(!ok);
        for(long i=2;i<=n;i++)
        if(d[i]!=inf)
        printf("%d ",d[i]);
        else
        printf(0);
}