Cod sursa(job #145006)

Utilizator rhadookooRadu Radu rhadookoo Data 28 februarie 2008 11:22:00
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream.h>
#define DIM 50001

#define MAX 50000001
struct lista{int inf,cost;
	    lista *urm;
	    }*p[DIM],*q;
int n,m,x,y,z,i,j,k,d[DIM],v[DIM];

int main(){
  ifstream f("dijkstra.in");
  f>>n>>m;
  for (i=1;i<=n;i++)
     {p[i]=NULL;d[i]=MAX;}
  for (i=1;i<=m;i++)
   {f>>x>>y>>z;
    q=new lista;
    q->inf=y;
    q->cost=z;
    q->urm=p[x];
    p[x]=q;
   q=new lista;
    q->inf=x;
    q->cost=z;
    q->urm=p[y];
    p[y]=q;
   }
  d[1]=0;k=0;
  while (k!=n)
     {for (i=1;i<=n;i++)
     if (d[i]!=MAX&&v[i]==0)
       {v[i]=1;k++;
       q=p[i];
       while(q!=NULL)
	 {if (d[q->inf]>d[i]+q->cost&&v[q->inf]==0)
	     d[q->inf]=d[i]+q->cost;
	 q=q->urm;
	 }
       }
     }
  f.close();

  ofstream g("dijkstra.out");
  for (i=2;i<=n;i++)
    g<<d[i]<<" ";
  g.close();
  return 0;
}