Pagini recente » Cod sursa (job #2135436) | Cod sursa (job #2265027) | Cod sursa (job #2574533) | Cod sursa (job #2153403) | Cod sursa (job #3251507)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
//#include <bits/stdc++.h>
#define in fin
#define out fout
#define mkp make_pair
#define oo 1000000000
#define fr first
#define sc second
#define ll long long
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector< pair<int, int> > v[50005];
ll d[50005];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll n, m; in >> n >> m;
for(int i = 0; i < m; i++){
ll a, b, c; in >> a >> b >> c;
// cout << a << " " << b << " " << c << '\n';
v[a].push_back( mkp(b, c) );
}
priority_queue< pair<ll, int>, vector< pair<ll, int> >, greater< pair<ll, int> > > pq;
d[1] = 0;
for(int i = 2; i <= n; i++) d[i] = oo;
for(int i = 0; i < v[1].size(); i++){
d[ v[1][i].fr ] = d[1] + v[1][i].sc;
pq.push( mkp( d[1] + v[1][i].sc, v[1][i].fr ) );
}
while(!pq.empty()){
pair<ll, int> p = pq.top(); pq.pop();
int nod = p.sc;
// cout << "procesam " << nod << '\n';
for(pair<ll, int> cop : v[nod]){
if( d[cop.fr] <= d[nod] + cop.sc ) continue;
d[ cop.fr ] = d[nod] + cop.sc;
pq.push( mkp( d[ cop.fr ], cop.fr ) );
}
}
for(int i = 1; i <= n; i++){
if(d[i] == oo) d[i] = 0;
}
for(int i = 2; i <= n; i++) out << d[i] << " ";
out << '\n';
return 0;
}