#include<iostream>
#include<vector>
using namespace std;
struct wWwWwWwWw{
int to,p;
};
vector<wWwWwWwWw>a[500005];
long long dis[100005];
bool mk[100005];
int main(){
int n,m,s;
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
a[u].push_back({v,w});
}
for(int i=0;i<=n;i++){
dis[i]=2147483647;
}
dis[s]=0;
for(int i=1;i<=n;i++){
int pos=0;
for(int j=1;j<=n;j++){
if(dis[pos]>dis[j]&&mk[j]==0) pos=j;
}
mk[pos]=1;
for(auto ed:a[pos]){
if(mk[ed.to]==0){
dis[ed.to]=min(dis[ed.to],dis[pos]+ed.p);
}
}
}
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
}