Cod sursa(job #1957852)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 7 aprilie 2017 20:09:42
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>
#include <queue>
#define x first
#define y second
using namespace std;
ofstream fout ("djikstra.out");
ifstream fin ("djikstra.in");
vector < pair < int , int > > v[50005];
priority_queue < pair < int , int > > q;
pair < int , int > aux;
const int oo = 2e9;
int n,m,i,a,b,c;
int rsp[50005];
int main()
{
    fin>>n>>m;
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>a>>b>>c;
        v[ a ].push_back( make_pair( b , c ) );
        v[ b ].push_back( make_pair( a , c ) );
    }
    for( i = 1 ; i <= n ; i++ )
        rsp[ i ] = oo;
    q.push( make_pair( 0 , 1 ) );
    while( q.size() )
    {
        aux = q.top();
        q.pop();
        aux.x *= -1;
        for( auto it : v[ aux.y ] )
        {
            if( aux.x + it.y < rsp[ it.x ] )
            {
                rsp[ it.x ] = aux.x + it.y;
                q.push( make_pair( -rsp[ it.x ] , it.x ) );
            }
        }
    }
    for( i = 2 ; i <= n ; i++ )
        fout<< ( rsp[ i ] != oo ? rsp[ i ] : 0 )<<" ";
}