Pagini recente » Cod sursa (job #785295) | Cod sursa (job #1779870) | Cod sursa (job #2064499) | Cod sursa (job #633084) | Cod sursa (job #3163106)
using namespace std;
#include<iostream>
#include<fstream>
#include<vector>
#include<set>
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
#define NMAX 50005
int n, m;
vector<pair<int,int>> v[NMAX];
set<pair<int,int>> s;
bool viz[NMAX];
int d[NMAX];
int main() {
fin >> n >> m;
for (int i = 1; i<=m; i++) {
int a, b, c;
fin >> a >> b >> c;
v[a].push_back({b, c});
}
for (int i = 1; i<=n; i++) {
d[i] = 2e9;
}
s.insert({0, 1});
d[1] = 0;
while (!s.empty()) {
pair<int,int> el = *s.begin();
s.erase(el);
int nod = el.second;
int val = el.first;
viz[nod] = 1;
for (auto it: v[nod]) {
int nxt = it.first;
int cst = it.second;
if (viz[nxt]) continue;
if (d[nod]+cst < d[nxt]) {
s.erase({d[nxt], nxt});
d[nxt] = d[nod] + cst;
s.insert({d[nxt], nxt});
}
}
}
for (int i = 2; i<=n; i++) {
fout << d[i] << " ";
}
return 0;
}