Cod sursa(job #2906425)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 26 mai 2022 00:16:34
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
#ifndef INFOARENA
ifstream fin("ciorna.in");
ofstream fout("ciorna.out");
#else
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#endif // HOME
const int N = 1e5 + 5, INF = 1e9;
vector <pair <int, int>> g[N];
int d[N];

int main() {
    int n, m;
    fin >> n >> m;
    for(int i = 1, u, v, w; i <= m; i++)
        fin >> u >> v >> w,
        g[u].emplace_back(v, w),
        g[v].emplace_back(u, w);
    set <pair <int, int>> s;
    s.insert(make_pair(0, 1));
    fill(d + 2, d + n + 1, INF);
    while(!s.empty()) {
        int u = s.begin()->second;
        s.erase(s.begin());
        for(auto [v, w] : g[u]) if(d[v] > d[u] + w) {
            if(s.count(make_pair(d[v], v))) s.erase(s.find(make_pair(d[v], v)));
            s.insert(make_pair(d[u] + w, v));
            d[v] = d[u] + w;
        }
    }
    for(int i = 2; i <= n; i++)
        fout << (d[i] == INF ? 0 : d[i]) << " ";
}