Pagini recente » Cod sursa (job #1353362) | Cod sursa (job #1835692) | Cod sursa (job #3966) | Cod sursa (job #3143068) | Cod sursa (job #1259034)
#include <cstdio>
#include <utility>
#include <vector>
#include <queue>
using namespace std;
long N, M;
long viz[50001];
bool vz[50001];
vector<pair<long, long> > v[50001];
queue<long> q;
long a, b, l;
int main() {
long i, j, crt;
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%ld %Ld", &N, &M);
for(i = 1; i <= M; i++) {
scanf("%ld %ld %ld", &a, &b, &l);
v[a].push_back(make_pair(b, l));
//v[b].push_back(make_pair(a, l));
}
vz[1] = true;
viz[1] = 0;
q.push(1);
while(!q.empty()) {
crt = q.front();
for(i = 0; i < v[crt].size(); i++) {
if(!vz[v[crt][i].first] || viz[v[crt][i].first] > v[crt][i].second + viz[crt]) {
vz[v[crt][i].first] = true;
viz[v[crt][i].first] = v[crt][i].second + viz[crt];
q.push(v[crt][i].first);
}
}
q.pop();
}
for(i = 2; i <= N; i++) {
printf("%ld ", viz[i]);
}
printf("\n");
return 0;
}