#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define sf scanf
#define pf printf
#define maxn 7005
using namespace std;
int n, m, s, u, v, w;
long long dis[maxn][maxn];
int main() {
sf("%d %d %d", &n, &m, &s);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dis[i][j] = 2147483647;
}
}
for (int i = 1; i <= m; i++) {
sf("%d %d %d", &u, &v, &w);
dis[u][v] = w;
}
for (int k = 1; k <= n; k++) {
for (int i = 1; i <= n; i++) {
if (i == k || dis[i][k] == 2147483647) {
continue;
}
for (int j = 1; j <= n; j++) {
dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
}
}
}
dis[s][s] = 0;
for (int i = 1; i <= n; i++) {
pf("%d ", dis[s][i]);
}
puts(" ");
return 0;
}