第一个点 T 了
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,s,dis[N];
struct node{
int v,w;
};
vector<node> adj[N];
void solve(){
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
for(int i=1;i<n;i++){
bool f=1;
for(int u=1;u<=n;u++){
for(auto x:adj[u]){
int v=x.v,w=x.w;
if(dis[u]+w<dis[v]){
f=0;
dis[v]=dis[u]+w;
}
}
}
if(f) break;
}
for(int i=1;i<=n;i++){
if(dis[i]==0x3f3f3f3f){
cout<<INT_MAX<<" ";
}else{
cout<<dis[i]<<" ";
}
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>m>>s;
int u,v,w;
while(m--){
cin>>u>>v>>w;
adj[u].push_back({v,w});
}
solve();
return 0;
}