Cod sursa(job #2887365)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 9 aprilie 2022 14:12:44
Problema Algoritmul lui Dijkstra Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#import<fstream>
#import<vector>
#import<algorithm>
#import<cstring>
#import<queue>
#import<unordered_set>
#import<string>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
vector<vector<pair<int,int>>>a;
vector<int>rez;
main()
{
    int n,m;
    cin>>n>>m;
    a.resize(n+1);
    rez.resize(n+1);
    for(int i=1;i<=n;i++)
    {
        rez[i]=2e9;
    }
    while(m--)
    {
        int x,y,z;
        cin>>x>>y>>z;
        a[x].push_back({z,y});
    }
    rez[1]=0;
    priority_queue<pair<int,int>>pri;
    pri.push({0,1});
    while(!pri.empty())
    {
        auto c=pri.top();
        int x=c.second;
        int distx=-c.first;
        pri.pop();
        if(distx!=rez[x])
            continue;
        for(auto v:a[c.second])
        {
            int y=v.second;
            int costy=v.first;
            if(rez[y]>rez[x]+costy)
            {
                rez[y]=rez[x]+costy;
                pri.push({-rez[y],y});
            }
        }
    }
    for(int i=2;i<=n;i++)
    {
        if(rez[i]!=2e9)
        {
            cout<<rez[i]<<' ';
        }
        else
        {
            cout<<"0 ";
        }
    }
}