Pagini recente » Cod sursa (job #78709) | Cod sursa (job #2757392) | Cod sursa (job #1375411) | Cod sursa (job #2784954) | Cod sursa (job #2281667)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define ll long long
#define fi first
#define se second
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int n, m, k, from[300100], x, y;
ll dp[300100], c;
vector <pair <int, ll> > v[300100];
set <pair <ll, int> > s;
int main() {
//ifstream cin("tst.in");
//ofstream out("tst.out");
ios_base::sync_with_stdio(0);
in.tie(NULL);
in >> n >> m;
for (int i = 1; i <= m; i++) {
in >> x >> y >> c;
v[x].push_back({c, y});
v[y].push_back({c, x});
}
for (int i = 1; i <= n; i++)
dp[i] = LLONG_MAX;
dp[1] = 0;
s.insert({0, 1});
while (s.size() > 0) {
auto nod = *s.begin();
s.erase(s.begin());
for (auto i : v[nod.se]) {
if (nod.fi + i.fi < dp[i.se]) {
if (dp[i.se] != LLONG_MAX)
s.erase(s.find({dp[i.se], i.se}));
dp[i.se] = nod.fi + i.fi;
s.insert({dp[i.se], i.se});
}
}
}
for (int i = 2; i <= n; i++)
out << (dp[i] != LLONG_MAX ? dp[i] : 0) << ' ';
return 0;
}