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 */