Cod sursa(job #159357)

Utilizator drigishCiordas Dragos drigish Data 14 martie 2008 08:31:42
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<iostream>
using namespace std;
long int n,m,d[1005]; short int v[1005]; int i,j,c[1005][1005],mi,poz;
int main ()
{
     freopen("dijkstra.in","r",stdin);
     freopen("dijkstra.out","w",stdout);
     cin>>n>>m;
     for(i=1; i<=n; i++)
      for(j=1; j<=n; j++)
       c[i][j]=10000;
     for(i=1; i<=m; i++)
      cin>>mi>>poz>>c[mi][poz];
     for(i=1; i<=n; i++)
      d[i]=c[1][i];
      
      
    
    d[1]=0;
     v[1]=1;
     for(i=1; i<=n-1; i++)
     {
              mi=10000;
              for(j=1; j<=n; j++)
                   if(v[j]==0 && d[j]<mi)
                   {
                           mi=d[j];
                           poz=j;
                   }
              v[poz]=1;
              for(j=1; j<=n; j++)
                   if(v[j]==0 && d[j]>d[poz]+c[poz][j]) d[j]=d[poz]+c[poz][j];
     }
     
     
     
    
    for(i=2; i<=n; i++)
        if(d[i]!=10000) cout<<d[i]<<' ';
        else cout<<'0'<<' ';
    fclose(stdin);
    fclose(stdout);
    return 0;
}