Cod sursa(job #1998693)

Utilizator Victor24Vasiesiu Victor Victor24 Data 8 iulie 2017 19:24:41
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <bits/stdc++.h>
#define y first
#define x second

using namespace std;

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

vector < pair < int, int > > v[100005];

int n, m, i, a, b, s, fv[100005], c;

priority_queue < pair < int , int > , vector < pair < int , int > > , greater < pair < int , int > > > pq;

pair <int, int> aux;

int main ()
{
    fin>>n>>m;

    for ( i = 1; i <= m ; i++ )
    {
        fin>>a>>b>>c;

        v[a].push_back( {b, c} );
        v[b].push_back( {a, c} );

    }

    pq.push( {0 , 1} );

    while ( !pq.empty() )
    {
        aux = pq.top();
        pq.pop();

        if ( fv[aux.x] )
        {
            continue;
        }

        fv[aux.x] = aux.y;

        for ( i = 0 ; i < v[aux.x].size() ; i++ )
        {
            pq.push( { aux.y + v[aux.x][i].y  , v[aux.x][i].x } );
        }

    }

    for ( i = 2 ; i <= n; i++ )
    {
        fout<<fv[i]<<" ";
    }

    return 0;
}