Pagini recente » Cod sursa (job #1754897) | Cod sursa (job #2981583) | Cod sursa (job #1807994) | Cod sursa (job #293178) | Cod sursa (job #3151308)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n, m, x, y, c, d[50005], ok[50005];
vector<pair<int, int>> v[50005];
void dijkstra(int nod) {
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> q;
d[nod] = 0;
q.push({0, nod});
while (!q.empty()) {
pair<int, int> nod = q.top();
q.pop();
if (ok[nod.second])
continue;
for (auto it : v[nod.second]) {
if (d[it.second] > nod.first + it.first) {
d[it.second] = nod.first + it.first;
q.push({d[it.second], it.second});
}
}
}
}
int main()
{
in >> n >> m;
for (int i = 1; i <= n; i++)
d[i] = 1e9;
for (int i = 1; i <= m; i++) {
in >> x >> y >> c;
v[x].push_back({c, y});
}
dijkstra(1);
for (int i = 2; i <= n; i++)
out << d[i] << " ";
return 0;
}