Cod sursa(job #250862)

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

int n,s[500],min,a[500][500],k,d[500],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]=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[k][i];
  // 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++)
 if (d[i]==32000) fout<<0<<" ";
 else
  fout<<d[i]<<" ";



fout.close();
return 0;
}