Cod sursa(job #2566753)

Utilizator MihclerioVladimir Chim Mihclerio Data 3 martie 2020 01:44:44
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>

const int inf=2e9+3;

using namespace std;

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    freopen("dijkstra.in","r",stdin);
    freopen("dijkstra.out","w",stdout);

    int n,m;
    cin>>n>>m;
    vector<pair<int,int>>v[n+3];
    for(int i=1;i<=m;i++)
    {
      int x,y,k;
      cin>>x>>y>>k;
      v[x].push_back(make_pair(y,k));
    }
    vector<int>d(n+3,inf);
    vector<bool>f(n+3,0);
    d[1]=0;
    set<pair<int,int>>h;
    h.insert(make_pair(1,0));
    while(!h.empty())
    {
      int k=h.begin()->first;
      h.erase(h.begin());
      if(f[k]) continue;
      f[k]=1;
      for(auto it:v[k])
      {
        int kk=it.first;
        int cc=it.second;
        if(d[k]+cc<d[kk])
        {
          d[kk]=d[k]+cc;
          h.insert(make_pair(kk,d[kk]));
        }
      }
    }
    for(int i=2;i<=n;i++)
    if(d[i]==inf) cout<<"0 "; else cout<<d[i]<<" ";

}