Pagini recente » Cod sursa (job #704902) | Cod sursa (job #2710764) | Cod sursa (job #61893) | Cod sursa (job #831147) | Cod sursa (job #1559585)
#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
#define DIM 50005
int N, M, x, y, lg, distmin[DIM];
int visited[DIM];
vector <vector <pair <int, int> > > Graph;
set <pair <int, int> > rs;
void Dijkstra(int nod);
int main() {
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d\n", &N, &M);
Graph.resize(N + 1);
for(int i = 1; i <= M; ++i) {
scanf("%d %d %d\n", &x, &y, &lg);
Graph[x].push_back(make_pair(y, lg));
}
for(int i = 2; i <= N; ++i) {
distmin[i] = 2e8;
}
Dijkstra(1);
for(int i = 2; i <= N; ++i) {
cout << (distmin[i] == 2e8 ? 0 : distmin[i]) << ' ';
}
cout << '\n';
return 0;
}
void Dijkstra(int nod) {
visited[nod] = 1;
for(auto x: Graph[nod]) {
if(distmin[x.first] > distmin[nod] + x.second) {
distmin[x.first] = distmin[nod] + x.second;
Dijkstra(x.first);
}
}
}