Pagini recente » Monitorul de evaluare | Cod sursa (job #3240775) | Cod sursa (job #1604357) | Cod sursa (job #2285965) | Cod sursa (job #3213444)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int kInf = 1e9;
vector<int> dij(int s, const vector<vector<pair<int, int>>> &adj) {
int n = adj.size();
vector<int> dist(n, kInf);
vector<bool> vis(n);
dist[s] = 0;
for(int i = 1; i < n; i++) {
int u = -1;
for(int i = 0; i < n; i++) {
if(!vis[i] && (u == -1 || dist[i] < dist[u])) {
u = i;
}
}
vis[u] = 1;
for(const auto &[v, c]: adj[u]) {
if(dist[v] > dist[u] + c) {
dist[v] = dist[u] + c;
}
}
}
return dist;
}
int main() {
int n, m;
fin >> n >> m;
vector<vector<pair<int, int>>> adj(n);
for(int i = 0; i < m; i++) {
int u, v, c;
fin >> u >> v >> c;
u--; v--;
adj[u].emplace_back(v, c);
}
vector<int> dist = dij(0, adj);
for(int i = 1; i < n; i++) {
if(dist[i] == kInf) {
fout << "0 ";
} else {
fout << dist[i] << " ";
}
}
return 0;
}