INF = 1e18 from collections import deque from heapq import heappush, heappop N, M = map(int, input().split()) G = [list() for _ in range(N)] for i in range(M): u, v, w = map(int, input().split()) u -= 1 v -= 1 G[u].append((v, w)) G[v].append((u, w)) # 頂点0からの距離 dist = [[INF] * (2) for _ in range(N)] dist[0][0] = 0 dist[0][1] = 0 kakutei = [[False] * (2) for _ in range(N)] que = [] heappush(que, (0, 0, 0)) while que: curr_dist, pos, mode = heappop(que) if kakutei[pos][mode]: continue kakutei[pos][mode] = True if mode == 0: # mode 0 のときは # 0 to 0 for nex, kyori in G[pos]: if kakutei[nex][0]: continue if dist[nex][0] > curr_dist + kyori: dist[nex][0] = curr_dist + kyori heappush(que, (dist[nex][0], nex, 0)) # 0 to 1 for nex, kyori in G[pos]: if kakutei[nex][1]: continue if dist[nex][1] > curr_dist: dist[nex][1] = curr_dist heappush(que, (dist[nex][1], nex, 1)) else: # mode: 1 のときは普通のダイクストラ for nex, kyori in G[pos]: if kakutei[nex][1]: continue if dist[nex][1] > curr_dist + kyori: dist[nex][1] = curr_dist + kyori heappush(que, (dist[nex][1], nex, 1)) #print(dist) for i in range(N): print(sum(dist[i]))