Cod sursa(job #1010578)

Utilizator Eby7Elena Obreja Eby7 Data 15 octombrie 2013 11:19:59
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#define nmax 50002
#define mmax 250002
#define inf 2000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct muchie
{
    long x,y,c;
}a[mmax];
long d[nmax],m,n;
int main()
{
    long i,x,y,c,ok;
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>c;
        a[i].x=x;
        a[i].y=y;
        a[i].c=c;
        if(x==1)
        d[y]=c;
    }
    for(i=2;i<=n;i++)
        if(d[i]==0)
            d[i]=inf;
        do
        {
            ok=1;
            for(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(i=2;i<=n;i++)
            if(d[i]!=inf)
                g<<d[i]<<" ";
            else
                g<<0;
        return 0;
}