Cod sursa(job #355071)

Utilizator mihaionlyMihai Jiplea mihaionly Data 10 octombrie 2009 10:04:35
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;
#define Mmax 250001
#define inf 1<<30
int x[Mmax],y[Mmax],c[Mmax],d[Mmax],n,m;
void read()
 {
 ifstream f("dijkstra.in");
 f>>n>>m;
 int i;
 for(i=1;i<=m;i++)
  {
  f>>x[i]>>y[i]>>c[i];
  if(x[i]==1)
	d[y[i]]=c[i];
  }
 d[1]=0;
 for(i=2;i<=n;i++)
  d[i]=inf;
 }
void solve()
 {
 int ok=0;
 while(!ok)
  {
  ok=1;
  for(int i=1;i<=m;i++)
   if(d[y[i]]>d[x[i]]+c[i])
    {
    d[y[i]]=d[x[i]]+c[i];
    ok=0;
    }
  }
 }
void show()
 {
 ofstream g("dijkstra.out");
 for(int i=2;i<=n;i++)
  if(d[i]!=inf)
  g<<d[i]<<" ";
  else
  g<<"0 ";
 }
int main()
 {
 read();
 solve();
 show();
 }