Cod sursa(job #2779810)

Utilizator vmnechitaNechita Vlad-Mihai vmnechita Data 5 octombrie 2021 00:21:19
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#define NMAX 50005
#define pb push_back

using namespace std;

ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");

struct A
{
    int cost, dest;
};

vector < A > v[NMAX];
multimap < int, int > b;

int main()
{
    vector < A > :: iterator it;
    int n, m, x, y, z, i, r[NMAX];

    fin >> n >> m;
    while ( m-- )
    {
        fin >> x >> y >> z;
        v[x].pb ( { z, y } );
    }

    for ( i = 2; i <= n; i++ ) r[i] = INT_MAX;

    b.insert ( { 0, 1 } );
    while ( b.empty() == 0 )
    {
        x = b.begin() -> second;
        b.erase ( b.begin() );

        for ( it = v[x].begin(); it != v[x].end(); it++ ) if ( r[x] + (*it).cost < r[(*it).dest] )r[(*it).dest] = r[x] + (*it).cost, b.insert ( { r[(*it).dest], (*it).dest } );
    }

    for ( i = 2; i <= n; i++ )
    {
        if ( r[i] != INT_MAX ) fout << r[i] << ' ';
        else fout << 0 << ' ';
    }

    return 0;
}