Cod sursa(job #3260074)

Utilizator AlexPlesescuAlexPlesescu AlexPlesescu Data 30 noiembrie 2024 09:20:54
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;
#define pb push_back
const int N = 5e4 + 5, INF = 1e9;

int n, m, dist[N];
vector<pair<int, int>> g[N];

void Dijkstra(int start) {
    dist[start] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> Q;
    Q.push({0, start});
    while (!Q.empty()) {
        auto node = Q.top();
        Q.pop();
        for (auto it : g[node.second]) {
            if (dist[node.second] + it.second < dist[it.first]) {
                dist[it.first] = dist[node.second] + it.second;
                Q.push({dist[it.first], it.first});
            }
        }
    }
    for (int i = 2; i <= n; i++) {
        cout << dist[i] << ' ';
    }
}

int main() {
    freopen("dijkstra.in", "r", stdin);
    freopen("dijkstra.out", "w", stdout);
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        dist[i] = INF;
    }
    for (int i = 1; i <= m; i++) {
        int u, v, cst;
        cin >> u >> v >> cst;
        g[u].pb({v, cst});
        g[v].pb({u, cst});
    }
    Dijkstra(1);
}