Pagini recente » Cod sursa (job #901063) | Cod sursa (job #2016880) | Cod sursa (job #2863099) | Cod sursa (job #2016869) | Cod sursa (job #3337142)
#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(d[i] == INF){
output<<"0 ";
}else{
output<<d[i]<<" ";
}
}
return 0;
}