感受到了自己与大佬之间的差距QAQ
#include <bits/stdc++.h>
#define int64 long long
#define fr first
#define sc second
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, i, u, v, w;
cin >> n >> m;
vector<vector<pair<int, int>>> g1(n), g2(n);
priority_queue < pair<int64, int>, vector<pair<int64, int>>, greater<>> q;
for (i = 0; i < m; i++) {
cin >> u >> v >> w;
u--, v--;
g1[u].push_back({w, v});
g2[v].push_back({w, u});
}
vector<int64> f(n, -1);
q.emplace(0, 0);
for (; !q.empty();) {
auto [d, x] = q.top();
q.pop();
if (f[x] != -1)continue;
f[x] = d;
for (auto [w, y] : g1[x]) {
if (f[y] != -1)continue;
q.emplace(d + w, y);
}
}
for (i = 0; i < n; i++) {
if (f[i] != -1) q.emplace(f[i], i);
f[i] = -1;
}
for (; !q.empty();) {
auto [d, x] = q.top();
q.pop();
if (f[x] != -1)continue;
f[x] = d;
for (auto [w, y] : g2[x]) {
if (f[y] != -1)continue;
q.emplace(d + w, y);
}
}
for (i = 1; i < n; i++) {
cout << f[i] << " \n"[i == n - 1];
}
}