Cod sursa(job #3337141)

Utilizator MoryokaVlaviano Mario Moryoka Data 26 ianuarie 2026 22:40:44
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
#include <stack>

using namespace std;

ifstream input("dijkstra.in");
ofstream output("dijkstra.out");

const int INF = 2000000000;

vector<vector<pair<int, int>>> adj;
int d[200005];

int main() {
  priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;

  int n, m;
  int x, y, w;

  input>>n>>m;

  adj.resize(n + 1);

  for(int i = 0; i < m; i++){
    input>>x>>y>>w;

    adj[x].push_back({w, y});
  }

  for (int i = 1; i <= n; i++) {
    d[i] = INF;
  }

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

  while(!pq.empty()){
    int d_current = pq.top().first;
    int u = pq.top().second;
    pq.pop();

    if(d_current > d[u]) continue;

    for(pair<int, int> x : adj[u]){
      int c_x = x.first;
      int u_x = x.second;

      if(d[u] + c_x < d[u_x]){
        d[u_x] = d[u] + c_x;
        pq.push({d[u_x], u_x});
      }
    }
  }
  
  for(int i = 2; i <= n; i++){
    if(dist[i] == INF){
      output<<"0 ";
    }else{
      output<<d[i]<<" ";
    }
  }

  return 0;
}