Cod sursa(job #3312700)

Utilizator depevladVlad Dumitru-Popescu depevlad Data 29 septembrie 2025 16:05:07
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
#ifndef LOCAL
  freopen("dijkstra.in", "r", stdin);
  freopen("dijkstra.out", "w", stdout);
#endif
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int N;
  int M;
  cin >> N >> M;
  vector<int> D(N, INT_MAX);
  vector<vector<pair<int, int>>> G(N);
  for (; M--;) {
    int A;
    int B;
    int C;
    cin >> A >> B >> C;
    --A;
    --B;
    G[A].emplace_back(C, B);
  }
  priority_queue<pair<int, int>, vector<pair<int, int>>,
                 greater<pair<int, int>>>
      pq;
  D[0] = 0;
  pq.emplace(0, 0);
  for (; pq.size();) {
    auto const [d, u] = pq.top();
    pq.pop();
    for (auto const [e, v] : G[u]) {
      if (D[v] == INT_MAX) {
        D[v] = D[u] + e;
        pq.emplace(D[v], v);
      }
    }
  }
  for (int i = 1; i < N; ++i) {
    if (i > 1) {
      cout << " ";
    }
    cout << (D[i] == INT_MAX ? 0 : D[i]);
  }
  cout << "\n";
  return 0;
}