Cod sursa(job #3148697)

Utilizator me088me088 me088 me088 Data 3 septembrie 2023 15:38:04
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
#define pb push_back
#define ll long long
#define loop(i,a,b) for(int i=a;i<=b;i++)
#define ln '\n'
#define inf 2e9
#define cin f
#define cout g
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");

int n, p, x, y, z, d[101];
bool c[101];
vector<pair<int, int>> v[101];

int main()
{
    cin>>n>>p;
    p = 1;
    while(cin>>x>>y>>z)
        v[x].pb({y, z});
    loop(i,1,n)d[i] = inf;
    d[p] = 0;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
    q.push({0, p});
    while(!q.empty()){
        x = q.top().second;
        q.pop();
        if(c[x])continue;
        c[x] = 1;
        for(auto i : v[x]){
            y = i.first;z = i.second;
            if(d[y] > d[x]+z){
                d[y] = d[x]+z;
                q.push({d[y], y});
            }
        }
    }
    loop(i,1,n)cout<<(d[i] == inf ? -1 : d[i])<<' ';

}