动态规划
#include<stdio.h>
#include<string.h>
#define max 99999999
#define min(a,b) a<b?a:b
int main(){
int n,m,i,j,a,b,v,k;
scanf("%d%d",&n,&m);
int dp[n][n];
for(i=0;i<n;i++){
for(j=0;j<n;j++){
dp[i][j]=max;
}
}
for(i=0;i<m;i++){
scanf("%d%d%d",&a,&b,&v);
dp[a][b]=v;
}
//核心,动态规划
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
if(dp[i][k]!=max&&dp[k][j]!=max){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
}
for(i=2;i<=n;i++){
printf("%d ",dp[1][i]);
}
}