#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> using namespace std; int n,m,INF=99999999; int e[1001][1001],road[1001],jdg[1001]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(i==j) e[i][j]=0; else e[i][j]=INF; } for(int i=1;i<=m;i++) { int a,b,c; cin>>a>>b>>c; e[a][b]=c; } for(int i=1;i<=n;i++) road[i]=e[1][i]; jdg[1]=1; for(int i=1;i<=n-1;i++) { int min=INF,u; for(int j=1;j<=n;j++) if(jdg[j]==0&&road[j]<min) { min=road[j]; u=j; } jdg[u]=1; for(int j=1;j<=n;j++) if(e[u][j]<INF&&road[j]>road[u]+e[u][j]) road[j]=road[u]+e[u][j]; } for(int i=1;i<=n;i++) cout<<road[i]<<" "; cout<<endl; return 0; }