#include<iostream>
using namespace std;
int maps[3000][3000],dis[1000000],n,m,s,book[1000000],now;
int inf=99999999;
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j) maps[i][j]=0;
else maps[i][j]=inf;
}
}
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
maps[u][v]=w;
}
for(int i=1;i<=n;i++)
{
dis[i]=maps[s][i];
}
for(int i=1;i<=n;i++)
{
book[i]=0;
}
book[s]=1;
for(int i=1;i<=n;i++)
{
int min=inf;
for(int j=1;j<=n;j++)
{
if (dis[j]<min&&book[j]==0)
{
min=dis[j];
now=j;
}
}
book[now]=1;
for(int j=1;j<=n;j++)
{
if(maps[now][j]<inf)
{
if(dis[j]>dis[now]+maps[now][j]) dis[j]=dis[now]+maps[now][j];
}
}
}
for(int i=1;i<=n;i++)
{
cout<<dis[i]<<" ";
}
return 0;
}