Cod sursa(job #1922122)

Utilizator george.harigaGeorge Hariga george.hariga Data 10 martie 2017 16:04:37
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#include<vector>
#include <queue>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF=0x3f3f3f3f;
int main()
{
    priority_queue<pair<int,int> >p;
    int n,x,y,c,i,j,m;
    vector<pair<int,int> >::iterator it;
    vector<pair<int,int> >Noduri[50001];
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>y>>x>>c;
        Noduri[y].push_back(make_pair(c,x));
        Noduri[x].push_back(make_pair(c,y));
    }
    vector<int>D(n+1,INF);
    int nod,val,N,V;
    D[1]=0;
    for(p.push(make_pair(-D[1],1));!p.empty();)
    {
        val=-p.top().first;
        nod=p.top().second;
        p.pop();
        if(D[nod]<val)
            continue;
        for(it=Noduri[nod].begin() ; it != Noduri[nod].end() ; ++it)
        {
            V=(*it).second;
            N=(*it).first;
            if(D[V]>D[nod]+N)
            {
                D[V]=D[nod]+N;
                p.push(make_pair(-D[V],V));
            }
        }
    }
    for(i=2;i<=n;i++)
        if(D[i]!=INF)
            fout<<D[i]<<" ";
        else
            fout<<-1<<" ";
    return 0;
}