Pagini recente » Cod sursa (job #1849512) | Cod sursa (job #2077729) | Cod sursa (job #275186) | Cod sursa (job #1390996) | Cod sursa (job #2432725)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 50005, MAXM = 250005;
#define fr first
#define sec second
priority_queue<pair<int, int> > pq;
vector<pair<int, int> > graf[MAXN];
int ans[MAXN];
int main()
{
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n, m, a, b, c;
fin >> n >> m;
for(int i = 1; i <= m; ++i){
fin >> a >> b >> c;
graf[a].push_back(make_pair(b, c));
}
for(int i = 2; i <= n; ++i) ans[i] = 1e9;
pq.push(make_pair(1, ans[1]));
while(!pq.empty()){
int nod = pq.top().fr, cost = pq.top().sec;
pq.pop();
if(ans[nod] != cost) continue;
for(int i = 0; i < int(graf[nod].size()); ++i){
if(cost + graf[nod][i].sec < ans[graf[nod][i].fr]){
ans[graf[nod][i].fr] = cost + graf[nod][i].sec;
pq.push(make_pair(graf[nod][i].fr, ans[graf[nod][i].fr]));
}
}
}
for(int i = 2; i <= n; ++i){
if(ans[i] != 1e9) fout << ans[i];
else fout << 0;
fout << " ";
}
return 0;
}