Rt.
code:
#include<iostream>
#include<cstring>
#define int long long
#define re register
using namespace std;
int n,m,s,u,v,w,dis[10010],lnsz,hd[10010];
bool inq[10050];
struct ln{
int u,v,w,nxt;
}a[500010];
void add(int u,int v,int w){
a[++lnsz].u=u;
a[lnsz].v=v;
a[lnsz].w=w;
a[lnsz].nxt=hd[u];
hd[u]=lnsz;
}
void dfs_spfa(int t){
inq[t]=true;
for(re int i=hd[t];i;i=a[i].nxt){
if(dis[a[i].v]>dis[t]+a[i].w){
dis[a[i].v]=dis[t]+a[i].w;
if(!inq[a[i].v])
dfs_spfa(a[i].v);
else{
cerr<<"FUH";
return;
}
}
}
inq[t]=false;
}
signed main(){
cin>>n>>m>>s;
for(re int i=0;i<=n;i++)
dis[i]=2147483647;
dis[s]=0;
for(re int i=0;i<m;i++){
cin>>u>>v>>w;
add(u,v,w);
}
dfs_spfa(s);
for(re int i=1;i<=n;i++)
cout<<dis[i]<<' ';
return 0;
}