Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define int int64_t
- vector<vector<pair<int, int>>> g;
- void dijkstra(int n, int st, vector<int>& d) {
- d.assign(n, 2e18);
- d[st] = 0;
- vector<bool> handled(n);
- for (int qqq = 0; qqq < n; qqq++) {
- int v = -1;
- for (int i = 0; i < n; i++) {
- if (handled[i]) {
- continue;
- }
- if (v == -1 || d[v] > d[i]) {
- v = i;
- }
- }
- handled[v] = true;
- for (auto [to, len]: g[v]) {
- if (d[to] > d[v] + len) {
- d[to] = d[v] + len;
- }
- }
- }
- }
- int32_t main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0); cout.tie(0);
- int n, m;
- cin >> n >> m;
- g.resize(n);
- for (int i = 0; i < m; i++) {
- int a, b, c;
- cin >> a >> b >> c;
- a--; b--;
- g[a].push_back({b, c});
- }
- vector<int> d;
- dijkstra(n, 0, d);
- for (int i = 0; i < n; i++) {
- cout << d[i] << ' ';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment