Cod sursa(job #2147825)

Utilizator ionutmargineanMarginean Ionut ionutmarginean Data 1 martie 2018 01:00:00
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>

#define nod second
#define cost first
#define INF 0x3f3f3f3f

using namespace std;

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

vector < pair < int, int > > G[50005];
priority_queue <  pair < int , int >, vector < pair < int, int > >, greater < pair < int, int > > > pq;

pair <int,int> aux;
int N, M, i, j, x, y, z, fv[50005];

int main()
{
    fin >> N >> M;

    while( i < M )
    {
        fin>>x>>y>>z;
        G[x].push_back(make_pair( z, y ) );
        i++;
    }

    pq.push( make_pair(0,1) );

    while( ! pq.empty() )
    {
        aux=pq.top();
        pq.pop();
        ///fout<<aux.nod<<" "<<aux.cost<<'\n';
        if( !fv[ aux.nod ] )
        {
            fv[aux.nod]=aux.cost;
            for( i = 0 ; i < G[aux.nod].size() ; i++ )
            {
                if( !fv[ G[aux.nod][i].nod ] )
                    pq.push( make_pair(aux.cost + G[aux.nod][i].cost,G[aux.nod][i].nod));
            }
        }
    }

    for( i = 2 ; i <= N ; i++ )
    {
        /*fout<<i<<" : ";
        for( j = 0 ; j < G[i].size() ; j++ )
        {
            fout<< G[i][j].nod<<"-"<<G[i][j].cost<<" ";
        }
        fout<<'\n';*/
        fout<<fv[i]<<" ";
    }
    return 0;
}