Pagini recente » Cod sursa (job #2473916) | Cod sursa (job #1334750) | Cod sursa (job #2903462) | Cod sursa (job #2456580) | Cod sursa (job #1445582)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
const int nmx = 50005, inf = 0x3f3f3f3f;
int n, dist[nmx];
vector <pair <int,int> > g[nmx]; /// pereche < cost , nod >
inline void citire(){
int m, nod1, nod2, cost;
scanf("%d %d", &n, &m);
for(; m; --m){
scanf("%d %d %d", &nod1, &nod2, &cost);
g[nod1].push_back(make_pair(cost,nod2));
}
}
inline void rezolvare(){
memset(dist, inf, sizeof(dist));
dist[1] = 0;
queue <int> q;
q.push(1);
int nod_curent, cost_curent, nr_vecini;
while(not q.empty()){
nod_curent = q.front();
nr_vecini = g[nod_curent].size();
for(int i = 0; i < nr_vecini; ++i)
if(dist[g[nod_curent][i].second] > dist[nod_curent] + g[nod_curent][i].first ){
dist[g[nod_curent][i].second] = dist[nod_curent] + g[nod_curent][i].first;
q.push(g[nod_curent][i].second);
}
q.pop();
}
}
inline void afish(){
for(int i = 2; i <= n; ++i){
if(dist[i] == inf){
printf("0 ");
continue;
}
printf("%d ", dist[i]);
}
}
int main(){
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
citire();
rezolvare();
afish();
return 0;
}