#include<bits/stdc++.h>
using namespace std;
struct node{
int v,w;
node(){}
node(int vv,int ww){
v=vv;
w=ww;
}
};
vector<node>g[110000];
int n,m,s,t,d[110000],u,v,w;
set<pair<int,int> >heap;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>n>>m>>s;
for(int i=0;i<m;i++){
cin>>u>>v>>w;
g[u].push_back(node(v,w));
g[v].push_back(node(u,w));
}
memset(d,0x3f,sizeof d);
d[s]=0;
heap.insert(make_pair(0,s));
while(heap.size()){
int mind=heap.begin()->first,v=heap.begin()->second;
heap.erase(heap.begin());
for(int i=0;i<g[v].size();i++){
if(d[g[v][i].v]>d[v]+g[v][i].w){
heap.erase(make_pair(d[g[v][i].v],g[v][i].v));
d[g[v][i].v]=d[v]+g[v][i].w;
heap.insert(make_pair(d[g[v][i].v],g[v][i].v));
}
}
}
for(int i=1;i<=n;i++)cout<<d[i]<<" ";
return 0;
}
一组没过全红了