Cod sursa(job #2911478)

Utilizator AndreiPaval03Andrei Paval AndreiPaval03 Data 29 iunie 2022 22:02:09
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
    ifstream cin("dijkstra.in");
    ofstream cout("dijkstra.out");

    int n, m; cin >> n >> m;
    vector<vector<pair<int, int>>> adj(n + 1, vector<pair<int, int>>(0));
    for (int i = 1; i <= m; i++) {
        int a, b, w; cin >> a >> b >> w;
        adj[a].push_back(make_pair(b, w));
    }

    vector<int> dist(n + 1, INT_MAX / 2);
    vector<bool> visited(n + 1, false);
    dist[1] = 0;
    for (int k = 1; k <= n; k++) {
        int u;
        int min_dist = INT_MAX;
        for (int i = 1; i <= n; i++) {
            if (!visited[i] and min_dist > dist[i]) {
                min_dist = dist[i];
                u = i;
            }
        }
        visited[u] = true;
        for (auto p : adj[u]) {
            int v = p.first;
            int w = p.second;
            if (dist[u] + w < dist[v]) {
                dist[v] = dist[u] + w;
            }
        }
    }

    for (int i = 2; i <= n; i++) {
        cout << dist[i] << " ";
    }
    
    return 0;
}