#include using namespace std; int main() { int n, m; cin >> n >> m; vector>> adj(n); for (int i = 0; i < m; i++) { int a, b, c; cin >> a >> b >> c; a--, b--; adj[a].emplace_back(b, c); adj[b].emplace_back(a, c); } vector> dist(n, vector(2, 1e18)); using P = pair; priority_queue, greater

> que; que.emplace(0, 0); dist[0][0] = dist[0][1] = 0; while (que.size()) { P top = que.top(); que.pop(); int u = top.second; long long d = top.first; for (auto& p : adj[u]) { int v = p.first, w = p.second; dist[v][1] = min(dist[v][1], d); if (d + w < dist[v][0]) { dist[v][0] = d + w; que.emplace(d + w, v); } } } for (int i = 0; i < n; i++) { cout << dist[i][0] + dist[i][1] << '\n'; } }