Cod sursa(job #2212092)

Utilizator lucaperjuLuca Perju Verzotti lucaperju Data 13 iunie 2018 10:53:40
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <queue>
#include <vector>
#define inf (999999999)
using namespace std;
ifstream in ("dijkstra.in");
ofstream out ("dijkstra.out");
int cst[50003],n,m;
vector <int> v[50003];
vector <int> co[50003];
struct nazac
{
    int x;
};
bool operator<(nazac a, nazac b)
{
    if(cst[a.x]>cst[b.x])
        return true;
    return false;
}
priority_queue <nazac> q;
void citire ()
{
    int i,a,b,c;
    in>>n>>m;
    cst[1]=0;
    for(i=2;i<=n;++i)
        cst[i]=inf;
    for(i=1;i<=n;++i)
        q.push({i});
    for(i=1;i<=n;++i)
    {
        in>>a>>b>>c;
        v[a].push_back(b);
        co[a].push_back(c);
    }
}
void dijkstra ()
{
    int nc,nn,i;
    while(!q.empty())
    {
        nc=q.top().x;
        q.pop();
        for(i=0;i<v[nc].size();++i)
        {
            nn=v[nc][i];
            if(cst[nn]>cst[nc]+co[nc][i])
                cst[nn]=cst[nc]+co[nc][i];
        }
    }
}
int main()
{
    citire();
    dijkstra();
    for(int i=2;i<=n;++i)
    {
        out<<cst[i]<<' ';
    }
    return 0;
}