Pagini recente » Cod sursa (job #152) | Cod sursa (job #489150) | Cod sursa (job #1685088) | Cod sursa (job #539367) | Cod sursa (job #3214238)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
const int nmax = 50005;
vector<pair<int, int>> l[nmax];
int sol[nmax];
void solve(){
priority_queue<pair<int, int>> q;
q.push({0, 1});
while(!q.empty()){
int node = q.top().second, dist = -q.top().first;
q.pop();
if(dist > sol[node]){
continue;
}
for(auto x : l[node]){
if(sol[x.first] == 0 || sol[x.first] > sol[node] + x.second){
sol[x.first] = sol[node] + x.second;
q.push({-sol[x.first], x.first});
}
}
}
}
int main(){
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n, m;
f >> n >> m;
for(int i = 1; i <= m; i++){
int x, y, z;
f >> x >> y >> z;
l[x].push_back({y, z});
}
sol[1] = 0;
solve();
for(int i = 2; i <= n; i++){
g << sol[i] << ' ';
}
}