听取wa声一片。。。
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
const int N=1e4+5,M=5e5+5;
int n,m,s;
int head[N],to[M],nxt[M],val[M],cnt;
int dis[N],vis[N];
void dijkstra()
{
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
for(int i=1;i<=n-1;++i)
{
int u=0;
for(int j=1;j<=n;++j)
if(!vis[j]&&dis[j]<dis[u]) u=j;
vis[u]=true;
for(int j=head[u];j;j=nxt[j])
{
int v=to[j];
dis[v]=min(dis[v],dis[u]+val[j]);
}
}
}
void add(int u,int v,int w)
{
to[cnt++]=v;
val[cnt]=w;
nxt[cnt]=head[u];
head[u]=cnt;
}
int main()
{
cin>>n>>m>>s;
while(m--)
{
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
}
dijkstra();
for(int i=1;i<=n;++i)
{
if(dis[i]==0x3f3f3f3f)
cout<<2147483647<<' ';
else
cout<<dis[i]<<' ';
}
return 0;
}