求助
#include<bits/stdc++.h>
using namespace std;
int n,m,s;const int inf=2147483647;
vector<int>adj[10005],val[10005];
int dp[10005];bool inq[10005];
void SPFA()
{
queue<int>q;q.push(s);
inq[s]=true;dp[s]=0;
while(q.size())
{
int fr=q.front();q.pop();
inq[fr]=false;
for(int j=0;j<adj[fr].size();++j)
{
if(dp[adj[fr][j]]>dp[fr]+val[fr][j])
{
dp[adj[fr][j]]=dp[fr]+val[fr][j];
if(!inq[adj[fr][j]])
{
inq[adj[fr][j]]=true;
q.push(adj[fr][j]);
}
}
}
}
}
int main()
{
fill(dp+1,dp+n+1,inf);
cin>>n>>m>>s;while(m--)
{
int u,v,w;cin>>u>>v>>w;
adj[u].push_back(v);
val[u].push_back(w);
}
SPFA();
for(int i=1;i<=n;++i)
cout<<dp[i]<<' ';
return 0;
}