Cod sursa(job #1614799)

Utilizator ceagarMEMA MIHAI-RAUL ceagar Data 26 februarie 2016 09:40:42
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.34 kb
#include<fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
struct nod
{
    int vecin,cost;
    nod *leg;
};
nod *LV[50002],*p;
int N,M,d[50002],T[50002];
char viz[50002];
int i,x,y,c,dmin,j,jmin;
int main()
{
    fin>>N>>M;
    for(i=1;i<=M;i++)
    {
        fin>>x>>y>>c;
        p=new nod;
        p->vecin=y;
        p->cost=c;
        p->leg=LV[x];
        LV[x]=p;
    }
    for(i=1;i<=N;i++)
    {
        viz[i]=0;
        d[i]=1000000000;
        T[i]=-1;
    }
    d[1]=0;
    T[1]=0;
    for(i-1;i<=N-1;i++)
    {
        dmin=1000000000;
        for(j=1;j<=N;j++)
        {
            if((viz[i]==0)&&(d[j]<dmin))
            {
                dmin=d[j];
            }
             jmin=j;
        }
        if(dmin==1000000000)
        {
            break;
        }
        viz[jmin]=1;
        for(p=LV[jmin];p!=NULL;p=p->leg)
        {
            x=p->vecin;
            c=p->cost;
            if(d[x]>d[jmin]+c)
            {
                d[x]=d[jmin]+c;
                T[x]=jmin;
            }
        }
    }
    for(i=2;i<=N;i++)
    {
        if(d[i]==1000000000)
        {
            fout<<x<<" ";
        }
        else
        {
            fout<<d[i]<<" ";
        }
    }
    fout.close();
    fin.close();
    return 0;

}