Cod sursa(job #2300466)

Utilizator anonimulsbanonimul sibian anonimulsb Data 11 decembrie 2018 15:06:53
Problema Algoritmul lui Dijkstra Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 50001
using namespace std;
ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");
struct arc
{
    int vf, pond;
} a;
vector <arc> la[nmax];
bool viz[nmax];
int d[nmax], T[nmax], oo=1<<30, i, j, minim, poz, sursa, n, x, y, z, m;
int main()
{f>>n>>m;
sursa=1;
while (f>>x>>y>>z)
    {
        arc a ={y, z};
        la[x].push_back(a);
    }
fill (d, d+nmax, oo);
d[sursa]=0;
for (i=1; i<=n-1; i++)
{
    minim=oo;
    for (j=1; j<=n; j++)
        if (viz[j]!=1 && d[j]<minim)
        minim=d[j], poz=j;
    viz[poz]=1;
    for (j=0 ;j<la[poz].size(); j++)
        {
            int v=la[poz][j].vf;
            int c=la[poz][j].pond;
            if (d[v]>d[poz]+c)
                {
                    d[v]=d[poz]+c;
                    T[v]=poz;
                }
        }
}
for (i=2; i<=n; i++)
    {
      if (d[i]==oo)
       g<<0<<' ';
     else
        //cout.width(4);
        g<<d[i]<<' ';
    }
    return 0;
}