#include<bits/stdc++.h>
using namespace std;
int inf=2147483647;
int max1=10010;
int max2=100100;
int nedge=0,num1=0;
int chu;
int n;
int m;
int u,v,w;
struct lia{
int to,dis,next;
}lian[100100];
int dis[10010],vis[10010],head[100010];
void add_edge(int from,int to,int dis){
lian[++num1].next=head[from];
lian[num1].to=to;
lian[num1].dis=dis;
head[from]=num1;
}
void spfa(){
queue<int>que;
for(int i=1;i<=n;i++){
dis[i]=inf;
vis[i]=0;
}
que.push(chu);
dis[chu]=0;
vis[chu]=1;
while(!que.empty()){
int u=que.front();
que.pop();
vis[u]=0;
for(int i=head[u];i;i=lian[i].next){
int v=lian[i].to;
if(dis[v]>dis[u]+lian[i].dis){
dis[v]=dis[u]+lian[i].dis;
if(vis[v]==0){
que.push(v);
vis[v]=1;
}
}
}
}
}
int main(){
cin>>n>>m>>chu;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
add_edge(u,v,w);
}
spfa();
for(int i=1;i<=n;i++){
if(chu==i){
cout<<0<<' ';
}else{
cout<<dis[i]<<' ';
}
}
}
无语了