Cod sursa(job #256629)

Utilizator igsifvevc avb igsi Data 11 februarie 2009 22:45:56
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>

using namespace std;

#define xn 50001
#define xm 250001
#define inf 0x3f3f

ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,m,d[xn],e[xm][3],t[xn];

void bellman()
{
     int x,y,c,i,nr,ok;
     
     memset(d,inf,sizeof(d));
     
     d[1]=0;
     
     for(ok=nr=1;ok && nr<n;nr++)
        for(ok=i=0;i<m;i++)
        {
           x=e[i][0];
           y=e[i][1];
           c=e[i][2];
           if(d[y]>d[x]+c)
             d[y]=d[x]+c,t[y]=1,ok=1;
        }
}

int main()
{
    int i;
    fin>>n>>m;
    for(i=0;i<m;i++)
      fin>>e[i][0]>>e[i][1]>>e[i][2];
    
    bellman();
    
    for(i=2;i<=n;i++)
     if(t[i])
      fout<<d[i]<<' ';
     else
      fout<<"0 ";
      
    fout<<'\n';
    
    fout.close();
    return 0;
}