Cod sursa(job #2365814)

Utilizator teodor345RosioruTeodor teodor345 Data 4 martie 2019 16:38:46
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,a,b,c,i,x[1001][1001],j,d[1001],tata[1001],viz[1001],k,ok,mn;
int main()
{f>>n>>m;
for(i=1;i<=m;i++)
{
    f>>a>>b>>c;
    x[a][b]=c;

}
for(i=1;i<=n;i++)
{
   for(j=1;j<=n;j++)
   {
       if(i==j)
        x[i][j]=0;
       else
       {
           if(x[i][j]==0)
            x[i][j]=99999;
       }
   }
}
d[1]=0;
tata[1]=0;
for(i=2;i<=n;i++)
{
    d[i]=x[1][i];
    tata[i]=1;
}
k=1;
ok=1;
viz[1]=1;
while(ok)
{

    mn=99999;
    for(i=1;i<=n;i++)
    {
        if(viz[i]==0)
        {
            if(mn>d[i])
                {mn=d[i];
                k=i;
                }
        }
    }

    if(mn!=99999)
    {
      viz[k]=1;
      for(i=1;i<=n;i++)
      {
          if(viz[i]==0 and d[k]+x[k][i]<d[i])
          {d[i]=d[k]+x[k][i];
          tata[i]=k;
          }
      }
    }
    else
        ok=0;

}
for(i=2;i<=n;i++)
    g<<d[i]<<" ";


    return 0;
}