Pagini recente » Cod sursa (job #998859) | Cod sursa (job #1458695) | Cod sursa (job #1359711) | Cod sursa (job #2755734) | Cod sursa (job #3164220)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> V[51000], C[52000];
ll N[51000], Z[51000];
ll l, n, gasite;
int main(){
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
cin >> n >> l;
int d, p, c;
while(l--){
cin >> d >> p >> c;
V[d].push_back(p);
C[d].push_back(c);
}
for(int i=2; i<=n; i++){
N[i] = 1e9;
}
d = 1;
ll n1 = n;
while(n1--){
for(int i=0; i<V[d].size(); i++){
if(N[d] + C[d][i] < N[V[d][i]]){
N[V[d][i]] = N[d] + C[d][i];
}
}
ll mn =1e9;
for(int i=1; i<=n; i++){
if(N[i] < mn && !Z[i]){
mn = N[i];
d = i;
}
}
Z[d] = 1;
}
for(int i=2; i<=n; i++){
cout << (N[i] == 1e9 ? 0 : N[i]) << ' ';
}
}