Pagini recente » Cod sursa (job #2783956) | Cod sursa (job #1264169) | Cod sursa (job #1438192) | Cod sursa (job #959093) | Cod sursa (job #3160247)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int nmax = 50005;
vector<pair<int, int>> l[nmax];
vector<int> sol(nmax, INT_MAX);
int n, m;
void solve(int start){
priority_queue<pair<int, int>> q;
q.push({0, 1});
while(!q.empty()){
int node = q.top().second;
q.pop();
for(auto x: l[node]){
int vec = x.first;
if(sol[vec] > sol[node] + x.second){
sol[vec] = sol[node] + x.second;
q.push({-sol[vec], vec});
}
}
}
}
int main(){
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(1);
for(int i = 2; i <= n; i++){
g << sol[i] << ' ' ;
}
}