1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 const int N=1005; 6 7 int D; 8 9 int G[N][N]; 10 11 int n,m,s; 12 13 ll dis[N][N]; 14 15 int main(){ 16 D=(ll)pow(2ll,31)-1; 17 scanf("%d%d%d",&n,&m,&s); 18 for(int i=1;i<=n;i++) 19 for(int j=1;j<=n;j++)if(i!=j)dis[i][j]=D; 20 for(int i=1;i<=m;i++){ 21 int x,y; 22 ll z; 23 scanf("%d%d%lld",&x,&y,&z); 24 dis[x][y]=min(dis[x][y],z); 25 } 26 for(int k=1;k<=n;k++){ 27 for(int i=1;i<=n;i++){ 28 for(int j=1;j<=n;j++){ 29 dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); 30 } 31 } 32 } 33 for(int i=1;i<=n;i++){ 34 printf("%lld ",dis[s][i]); 35 } 36 } 37 /* 38 5 15 5 39 2 5 181 40 1 5 98 41 4 2 49 42 3 2 262 43 4 3 26 44 2 4 192 45 5 1 221 46 2 2 254 47 4 4 233 48 1 5 44 49 5 4 67 50 4 2 214 51 1 1 47 52 1 1 118 53 5 4 3 54 55 */