Cod sursa(job #250854)

Utilizator StigmaSimina Pitur Stigma Data 31 ianuarie 2009 23:16:59
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream.h>
#include <fstream.h>
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int n,s[50000],min,a[50000][50000],k,d[50000],nod;

/*void drum(int i)
{if (i!=1) drum(t[i]);
 fout<<i<<" ";
} */



int main()
{int i,j,c,r;
 fin>>n>>k;
 k=1;
 while(fin>>i>>j>>c)
  a[i][j]=a[j][i]=c;


  for (i=1;i<=n;i++)
   for (j=1;j<=n;j++)
    if (i!=j && a[i][j]==0)
     a[i][j]=32000;

 for (i=1;i<=n;i++)
  {d[i]=a[i][k];
  // t[i]=1;

   }

//  t[k]=0;
  s[k]=1;

for (r=1;r<n;r++)
{min=30000;
 for (i=1;i<=n;i++)
  if (!s[i] && min>d[i])
    {nod=i;
     min=d[i];
    }

  s[nod]=1;

 for (i=1;i<=n;i++)
  if (!s[i] && d[i]>d[nod]+a[nod][i])
   {d[i]=d[nod]+a[nod][i];
    //t[i]=nod;
   }

   }

/*for (i=2;i<=n;i++)
 {drum(i);
  fout<<d[i]<<endl;
 }*/

 for (i=2;i<=n;i++)
  fout<<d[i]<<" ";



fout.close();
return 0;
}