Cod sursa(job #1005001)

Utilizator Edward2012Eduard Ursinschi Edward2012 Data 3 octombrie 2013 21:41:53
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>

using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,A[1000][1000],inainte[1000],c[1000],a,b,d,i,j,viz[1000],s,v,nr,k,o;
int main()
{f>>n>>m;
 for(i=1;i<=m;i++) {f>>a>>b>>d;A[a][b]=d;A[b][a]=d;}
 s=1;
 for(i=1;i<=n;i++) {c[i]=A[s][i];
                    inainte[i]=s;
                    if(A[s][i]>k)
                    {o=i;k=A[s][i];}
                    }

inainte[s]=0;
for(i=1;i<=n-2;i++)
{v=o;
 for(j=1;j<=n;j++)
    if(c[j]!=0&&c[j]<c[v]&&viz[j]==0) v=j;

 if(v!=0)
 {
     viz[v]=1;
   for(j=1;j<=n;j++)
   if(A[v][j]!=0&&viz[j]==0&&(c[j]==0||c[v]+A[v][j]<c[j]))
   {c[j]=c[v]+A[v][j];
    inainte[j]=v;nr++;
   }

   }
   else j=n;
 }
 for(i=2;i<=n;i++) g<<c[i]<<' ';
 g<<'\n';
    return 0;
}