Cod sursa(job #2734914)

Utilizator EusebiudistrugatorulLionel Messi Eusebiudistrugatorul Data 1 aprilie 2021 16:54:17
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;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");

int const N = 50001;
vector<pair<int, int>> graf[N];
vector<int> length(N, 1e9 + 1), visited(N);
queue<int> q;
int BFS() {
    while(!q.empty()) {
        int node = q.front();
        q.pop();
        for (int i = 0; i < graf[node].size(); ++i) {
            int x = graf[node][i].first;
            if (visited[x] == 0) {
                q.push(x);
                visited[i] = 1;
            }
            length[x] = min(length[node] + graf[node][i].second, length[x]);
        }
    }
}

int main() {
    int n, m; fin >> n >> m;
    for (int i = 1; i <= m; ++i) {
        int src, dest, dist;
        fin >> src >> dest >> dist;
        graf[src].push_back(make_pair(dest, dist));
    }
    length[1] = 0;
    visited[1] = 1;
    q.push(1);
    BFS();
    for (int i = 2; i <= n; ++i) {
        if (length[i] == 1e9 + 1) {
            fout << 0 << ' ';
        } else {
            fout << length[i] << ' ';
        }
    }
    return 0;
}