#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
#include <stack>
using namespace std;
int e[10001][10001], book[10001],dis[10001],n,m,s,p,q,t;
int inf = 99999999,min_;
int main(){
cin >> n >> m >> s;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
if(i != j) e[i][j] = inf;
for(int i = 1;i <= m;i++){
cin >> p >> q >> t;
e[p][q] = t;
}
book[s] = 1;
for(int i = 1;i <= n;i++)
dis[i] = e[s][i];
int u;
for(int i = 1;i < n;i++){
min_ = inf;
for(int j = 1;j <= n;j++){
if(book[j] == 0 && dis[j] < min_){
min_ = dis[j];
u = j;
}
}
book[u] = 1;
for(int v = 1;v <= n;v++){
if(e[u][v] < inf){
if(dis[v] > dis[u] + e[u][v]){
dis[v] = dis[u] + e[u][v];
}
}
}
}
for(int i = 1;i <= n;i++){
if(dis[i] >= inf){
cout << 2147483647 << " ";
continue;
}
cout << dis[i] << " ";
}
return 0;
}