Cod sursa(job #2739039)

Utilizator dumitrustefaniaDumitru Stefania dumitrustefania Data 6 aprilie 2021 18:33:59
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>
#define nmax 50005
#define pb push_back
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int tt,t,i,n,m,r,d[nmax],x,y,c,cost1,cost,nod,vec,ok;
vector <pair<int,int> > v[nmax];
priority_queue <pair<int,int> > q;
int main()
{
    f>>n>>m;
    for(i=1; i<=m; i++)
    {
        f>>x>>y>>c;
        v[x].pb({y,c});

    }

    for(i=1; i<=n; i++)
        d[i]=1<<30;

    d[1]=0;
    q.push({0,1});

    while(!q.empty())
    {
        cost=-q.top().first;
        nod=q.top().second;

        q.pop();
        if(cost==d[nod])
            for(i=0; i<v[nod].size(); i++)
            {
                vec=v[nod][i].first;
                if(d[vec]>v[nod][i].second+d[nod])
                {
                    d[vec]=v[nod][i].second+d[nod];
                    q.push({-d[vec],vec});
                }

            }
    }

    for(i=2; i<=n; i++)
        if(d[i]==1<<30)
            g<<0<<" ";
        else
            g<<d[i]<<" ";
    return 0;
}