Pagini recente » Cod sursa (job #508794) | Cod sursa (job #1380620) | Cod sursa (job #2581995) | Cod sursa (job #2060346) | Cod sursa (job #2911478)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
int n, m; cin >> n >> m;
vector<vector<pair<int, int>>> adj(n + 1, vector<pair<int, int>>(0));
for (int i = 1; i <= m; i++) {
int a, b, w; cin >> a >> b >> w;
adj[a].push_back(make_pair(b, w));
}
vector<int> dist(n + 1, INT_MAX / 2);
vector<bool> visited(n + 1, false);
dist[1] = 0;
for (int k = 1; k <= n; k++) {
int u;
int min_dist = INT_MAX;
for (int i = 1; i <= n; i++) {
if (!visited[i] and min_dist > dist[i]) {
min_dist = dist[i];
u = i;
}
}
visited[u] = true;
for (auto p : adj[u]) {
int v = p.first;
int w = p.second;
if (dist[u] + w < dist[v]) {
dist[v] = dist[u] + w;
}
}
}
for (int i = 2; i <= n; i++) {
cout << dist[i] << " ";
}
return 0;
}