#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define endl '\n'
#define PII pair<int,int>
typedef long long ll;
const int N=1e5+10;
int n,m;
struct edge {int v,w;};
vector<edge> e[N];
queue<int> q;
int d[N],vis[N];
void spfa(int s) {
memset(d,INF,sizeof d);
d[s]=0;vis[s]=1;q.push(s);
while(q.size()) {
int u=q.front();q.pop();vis[u]=0;
vis[u]=0;
for(auto ed : e[u]) {
int v=ed.v,w=ed.w;
if(d[v]>d[u]+w) {
d[v]=d[u]+w;
if(!vis[v]) vis[v]=1;q.push(v);
}
}
}
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int s;
cin >> n >> m >> s;
int a,b,c;
for(int i=1;i<=m;i++) {
cin >> a >> b >> c;
e[a].push_back({b,c});
}
spfa(s);
for(int i=1;i<=n;i++) {
cout << d[i] << ' ';
}
return 0;
}