Cod sursa(job #3148696)

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

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

void solve(){
    loop(i,2,n)d[i] = INF;
    priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
    q.push({0, 1});
    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});
            }
        }
    }
}

int main(){
	cin>>n>>m;
	loop(i,1,m){
        cin>>x>>y>>z;
        v[x].pb({y, z});
	}
	solve();
	loop(i,2,n)cout<<d[i]<<' ';
}