Pagini recente » Cod sursa (job #3005521) | Cod sursa (job #1013637) | Cod sursa (job #2111962) | Cod sursa (job #732107) | Cod sursa (job #2423522)
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#define inf 1<<24
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int main()
{
int n, m;
f >> n >> m;
vector <vector <pair<int, int> > > Graph(n+1);
vector <int> d(n+1, inf);
set <pair <int, int> > M;
for (int i = 1; i <= m; i++) {
int x, y, cost;
f >> x >> y >> cost;
Graph[x].push_back(make_pair(cost, y));
}
d[1] = 0;
M.insert(make_pair(0, 1));
while (!M.empty()) {
int nod = (*M.begin()).second;
M.erase(M.begin());
for (auto j: Graph[nod]) {
if (d[nod] + j.first < d[j.second]) {
M.erase(make_pair(d[j.second], j.second));
d[j.second] = d[nod] + j.first;
M.insert(make_pair(d[j.second], j.second));
}
}
}
for (int i = 2; i <= n; i++) {
if (d[i] == inf) g << "0" << ' ';
else g << d[i] << ' ';
}
}