Cod sursa(job #2566739)

Utilizator MihclerioVladimir Chim Mihclerio Data 3 martie 2020 01:10:26
Problema Algoritmul lui Dijkstra Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#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),p(n+3);
    vector<bool>f(n+3,0);
    d[1]=0;
    for(int i=1;i<=n;i++)
    {
      int k=0;
      for(int i=1;i<=n;i++)
      if(!f[i] && (k==0 || d[i]<d[k])) k=i;
      if(f[k]) break;
      f[k]=1;
      for(auto it:v[k])
      if(d[k]+it.second<d[it.first])
      {
        d[it.first]=d[k]+it.second;
        p[it.first]=k;
      }
    }
    for(int i=2;i<=n;i++)
    if(d[i]==inf) cout<<"0 "; else cout<<d[i]<<" ";

}