rembocoder

Untitled

Feb 10th, 2023
844
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define int int64_t
  6.  
  7. vector<vector<pair<int, int>>> g;
  8.  
  9. void dijkstra(int n, int st, vector<int>& d) {
  10.     d.assign(n, 2e18);
  11.     d[st] = 0;
  12.     vector<bool> handled(n);
  13.     for (int qqq = 0; qqq < n; qqq++) {
  14.         int v = -1;
  15.         for (int i = 0; i < n; i++) {
  16.             if (handled[i]) {
  17.                 continue;
  18.             }
  19.             if (v == -1 || d[v] > d[i]) {
  20.                 v = i;
  21.             }
  22.         }
  23.         handled[v] = true;
  24.         for (auto [to, len]: g[v]) {
  25.             if (d[to] > d[v] + len) {
  26.                 d[to] = d[v] + len;
  27.             }
  28.         }
  29.     }
  30. }
  31.  
  32. int32_t main() {
  33.     ios_base::sync_with_stdio(false);
  34.     cin.tie(0); cout.tie(0);
  35.     int n, m;
  36.     cin >> n >> m;
  37.     g.resize(n);
  38.     for (int i = 0; i < m; i++) {
  39.         int a, b, c;
  40.         cin >> a >> b >> c;
  41.         a--; b--;
  42.         g[a].push_back({b, c});
  43.     }
  44.     vector<int> d;
  45.     dijkstra(n, 0, d);
  46.     for (int i = 0; i < n; i++) {
  47.         cout << d[i] << ' ';
  48.     }
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment