rt,还要被inf折磨……
inf=0x3f3f3f3f WA90
inf=2147483647 WA0 且除了s全输出-1
#include <bits/stdc++.h>
#define int long long
#define I inline
#define inf 2147483647
using namespace std;
class Edge
{
public:
int u,v,w,next;
}e[500001];
queue<int> talk;
bool inq[10001];
int elast[10001],dis[10001],n,link;
I void add(int u,int v,int w)
{
e[++link]=(Edge){u,v,w,elast[u]};
elast[u]=link;
}
I void spfa(int u)
{
int v,i;
memset(dis,inf,sizeof(dis));
dis[u]=0;
talk.push(u),inq[u]=true;
while(!talk.empty())
{
u=talk.front();
talk.pop(),inq[u]=false;
for(i=elast[u];i!=0;i=e[i].next)
{
v=e[i].v;
if (dis[v]>dis[u]+e[i].w)
{
dis[v]=dis[u]+e[i].w;
if (!inq[v])
talk.push(v),inq[v]=true;
}
}
}
}
signed main()
{
int m,s,u,v,w,i,j;
scanf("%lld%lld%lld",&n,&m,&s);
while(m--)
{
scanf("%lld%lld%lld",&u,&v,&w);
add(u,v,w);
}
spfa(s);
for(i=1;i<=n;i++) printf("%lld ",dis[i]);
}