Pagini recente » Cod sursa (job #3360260) | Monitorul de evaluare | Cod sursa (job #3360268) | Monitorul de evaluare | Cod sursa (job #3359891)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
const int MAX = 5e4;
int n, m, dist[MAX + 5];
bool in_queue[MAX + 5];
vector <pair <int, int>> g[MAX + 5];
queue<int> q;
int main() {
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y, c;
fin >> x >> y >> c;
g[x].push_back({y, c});
}
for (int i = 2; i <= n; i++)
dist[i] = INT_MAX;
q.push(1);
in_queue[1] = true;
while (!q.empty()) {
int nod = q.front();
q.pop();
in_queue[nod] = 0;
for (auto vecin : g[nod]) {
int nod_vecin = vecin.first, cost = vecin.second;
if (dist[nod_vecin] > dist[nod] + cost) {
dist[nod_vecin] = dist[nod] + cost;
if (in_queue[nod_vecin] == false) { // il bagam fortat
in_queue[nod_vecin] = true;
q.push(nod_vecin);
}
}
}
}
for (int i = 2; i <= n; i++) {
if (dist[i] == INT_MAX)
fout << 0 << " ";
else
fout << dist[i] << " ";
}
return 0;
}