code
#include<bits/stdc++.h>
const int inf=99999999;
using namespace std;
struct yaz{
int nxt;
int to;
int dis;
}edge[inf];
int vis[inf],dis[inf],head[inf];
int cnt=0,a,b,c,n,m,s,i,j,v;
void add(int from,int to,int dis){
edge[cnt++].nxt=head[from];
edge[cnt].to=to;
edge[cnt].dis=dis;
head[from]=cnt;
}
void spfa(){
queue<int> q;
for(i=1;i<=inf;i++){
dis[i]=inf;
vis[i]=0;
}
dis[s]=0;
vis[s]=1;
q.push(s);
while(!q.empty()){
j=q.front();
q.pop();
vis[j]=0;
for(i=head[j];i;i=edge[i].nxt){
v=edge[i].to;
if(dis[v]>dis[j]+edge[i].dis){
dis[v]=dis[j]+edge[i].dis;
if(!vis[v]){
vis[v]=1;
q.push(v);
}
}
}
}
}
int main(){
cin>>n>>m>>s;
for(i=1;i<=m;i++){
cin>>a>>b>>c;
add(a,b,c);
}
spfa();
for(i=1;i<=n;i++){
cout<<dis[i]<<' ';
}
return 0;
}
编译运行后就这样: 0 99999999 99999999 4