Cod sursa(job #279047)

Utilizator loginLogin Iustin Anca login Data 12 martie 2009 17:31:13
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
# include <fstream>
using namespace std;
int a[10000][10000], n, m, t[50005];
ofstream fout ("dijkstra.out");
void citire ()
{
     int i, j, k, l;
     ifstream fin ("ff.in");
     fin>>n>>m;
     for (i=1;i<=m;i++)
         for (j=1;j<=n;j++)
             a[i][j]=-1;
     for (k=1;k<=m;k++)
     {
         fin>>i>>j>>l;
         a[i][j]=a[j][i]=l;
     }
}
void dijks ()
{
     int i, j, fiu, k, dm, tt, d[50005], v[50005];
     for (i=1;i<=n+2;i++)
         v[i]=0;
     t[1]=0;
     d[1]=0;
     v[1]=1;
     for (i=1;i<n;i++)
     {
         dm=33000;
         for (j=1;j<=n;j++)
             if (v[j])
                for (k=1;k<=n;k++)
                    if (v[k]==0)
                       if (a[j][k]>-1 && a[j][k]+d[j]<dm)           
                       {
                          dm=a[j][k]+d[j];
                          tt=j;
                          fiu=k;
                       }
         v[fiu]=1;
         d[fiu]=dm;
         t[fiu]=tt;
     }
}
int main ()
{
    int i; 
    citire ();
    dijks ();
    for (i=2;i<=n;i++)
        fout<<t[i]<<" ";
    return 0;
}