Cod sursa(job #3286331)

Utilizator DunareTanasescu Luca-Ioan Dunare Data 14 martie 2025 00:05:26
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int NMAX = 3*10e5, INF =  2e30;
int n, d[NMAX],m;
vector<pair<int, int>> G[NMAX];

void dijkstra(int s)
{
  for (int u = 0; u <= n; u++) {
    d[u] = INF;
  }

  set<pair<int, int>> q;

  q.emplace(0, s);
  d[s] = 0;

  while (!q.empty()) {
    int u = q.begin()->second;
    q.erase(q.begin());

    for (auto[v, w] : G[u]) {
      if (d[u] + w < d[v]) {
        q.erase({ d[v], v });
        d[v] = d[u] + w;
        q.emplace(d[v], v);
      }
    }
  }
}
int main()
{
    int u,v,w;
    f>>n>>m;
    for(int i=1;i<=m;i++)
    {
        f>>u>>v>>w;
        G[u].push_back({v,w});
    }
    dijkstra(1);
    for(int i=2 ;i<=n;i++)
        g<<d[i]<<' ';
    return 0;
}