#include using namespace std; #define int long long #define pb push_back #define fi first #define se second #define FOR(i,n) for(int i = 0;i=(s);i--) #define all(v) (v).begin(),(v).end() #define chmin(a,b) a=min((a),(b)) #define chmax(a,b) a=max((a),(b)) #define endl '\n' #define IOS() ios_base::sync_with_stdio(0);cin.tie(0) typedef long long ll; typedef pairpint; typedef vectorvint; typedef vectorvpint; const ll MOD=1000000007,INF=1ll<<60; typedef vectorvvint; int N,M; struct edge{ int to,cost; edge(int to,int cost):to(to),cost(cost){} }; vector tree[100010]; int dp[100010][2]; void dfs(int i,int j){ for(auto e:tree[i]){ if(j==0){ if(dp[e.to][1]>dp[i][j]){ dp[e.to][1]=dp[i][j]; dfs(e.to,1); } } if(dp[e.to][j]>dp[i][j]+e.cost){ dp[e.to][j]=dp[i][j]+e.cost; dfs(e.to,j); } } } signed main() { IOS(); cin>>N>>M; vpint v(M); rep(i,0,M){ int a,b,c; cin>>a>>b>>c; a--;b--; if(a>b)swap(a,b); v[i]={a,b}; tree[a].pb({b,c}); tree[b].pb({a,c}); } rep(i,0,N)rep(j,0,2)dp[i][j]=INF; dp[0][0]=dp[0][1]=0; dfs(0,0); rep(i,0,N){ cout<