Cod sursa(job #2678792)

Utilizator cret007Andrei Cret cret007 Data 28 noiembrie 2020 18:05:28
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define cin fin
#define cout fout

const int nmax = 50000,oo = 2000000000;

vector <pair<int,int> >v[nmax+5];
int use[nmax+5],n,m,x,y,cost,d[nmax+5];

void read()
{
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
      cin>>x>>y>>cost;
      v[x].push_back(make_pair(y,cost));
      v[y].push_back(make_pair(x,cost));
    }
}

void dijkstra()
{
   for(int i=1;i<=n;i++)
    d[i] = oo;

   d[1] = 0;

   for(int i=1;i<=n;i++)
   {
     int Min = oo,nod = oo;

     for(int j=1;j<=n;j++)
        if(d[j]<Min&&use[j]==0)
     {
         Min = d[j];
         nod = j;
     }
     use[nod] = 1;

    for(int j=0; j<(int)v[nod].size(); j++)
    {
      int vecin = v[nod][j].first, cost = v[nod][j].second;
      d[vecin] = min(d[vecin],d[nod]+cost);
    }
   }
}
void print()
{
    for(int i=2;i<=n;i++)
    {
        if(d[i]==oo)d[i] = 0;
        cout<<d[i]<<' ';
    }
}

int main()
{
    read();
    dijkstra();
    print();
    return 0;
}