#include<bits/stdc++.h>
#define inf 2147483647
using namespace std;
int dis[200005],u,v,w,n,m,s;
bool vis[200005];
vector<pair<int,int> >p[200005];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
void dijsktra()
{
while(q.empty()==false)
{
pair<int,int>k=q.top();
q.pop();
if(vis[k.second])
continue;
vis[k.second]=1;
for(int i=p[k.second].size()-1;~i;i--)
{
pair<int,int>e=p[k.second][i];
if(dis[e.second]>k.first+e.first)
q.push(make_pair(dis[e.second]=k.first+e.first,e.second));
}
}
return;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
dis[i]=inf;
for(int i=1;i<=n;i++)
{
cin>>u>>v>>w;
p[u].push_back(make_pair(w,v));
}
dis[s]=0;
q.push(make_pair(0,s));
dijsktra();
for(int i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}