Pagini recente » Cod sursa (job #980617) | Cod sursa (job #1561740) | Cod sursa (job #2542244) | Cod sursa (job #321589) | Cod sursa (job #3040472)
#include<fstream>
#include<vector>
#include<queue>
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int const N = 250003;
int n , m , a , b , c;
int dp[N];
vector<pii> v[N];
void dijkstra(){
fill(dp + 1 , dp + 1 + n , (1 << 30));
priority_queue<pii> h;
h.emplace(0 , 1);
dp[1] = 0;
while(!h.empty()){
pii x = h.top();
h.pop();
if(dp[x.se] != -x.fi)
continue;
for(pii e : v[x.se]){
if(dp[e.fi] > -x.fi + e.se){
dp[e.fi] = -x.fi + e.se;
h.emplace(-dp[e.fi] , e.fi);
}
}
}
}
int main(){
fin >> n >> m;
for(int i = 1 ; i <= n ; ++ i){
fin >> a >> b >> c;
v[a].emplace_back(b , c);
}
dijkstra();
for(int i = 2 ; i <= n ; ++ i)
fout << (dp[i] == (1 << 30) ? 0 : dp[i]) << ' ';
fout << '\n';
return 0;
}