Cod sursa(job #2965024)

Utilizator Emmy432622Rotariu Emanuel Emmy432622 Data 14 ianuarie 2023 11:48:37
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("dijkstra.in");
ofstream fout("dijkstra.out");

const int nmax = 50005;
int start = 1;
int n,m,a,b,c;
vector<pair<int,int>>g[nmax];
int dmin[nmax];

int main()
{
    fin >> n >> m;

    for(int i = 1 ; i <= m ; ++i)
    {
      fin >> a >> b >> c;
      g[a].push_back({b,c});
      g[b].push_back({a,c});
    }

    for(int i = 1 ; i <= n ; ++i)
      dmin[i] = INT_MAX;
    dmin[start]=0;

    queue<int>q;
    q.push(start);

    while(!q.empty())
    {
      int crt = q.front();
      for(auto it:g[crt])
      {
        if(dmin[crt] + it.second < dmin[it.first])
        {
          q.push(it.first);
          dmin[it.first] = dmin[crt] + it.second;
        }
      }
      q.pop();
    }

    for(int i = 2 ; i <= n ; ++i)
    {
      if(dmin[i] == INT_MAX)
        fout << 0;
      else
        fout << dmin[i];
      fout << ' ';
    }

    return 0;
}