#include<bits/stdc++.h>
using namespace std;
int k=1,head[10005];
const long long INF=2147483647;
struct edge{
int v,w,next;
}e[50001];
void add(int u,int v,int w){
e[k].v=v;
e[k].w=w;
e[k].next=head[u];
head[u]=k++;
}
int main(){
queue<int> q;
int n,m,s,u,v;
long long w;
int in[10005],dis[10005];
memset(in,0,sizeof(in));
memset(dis,INF,sizeof(dis));
memset(head,0,sizeof(head));
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++){
scanf("%d%d%lld",&u,&v,&w);
add(u,v,w);
}
dis[s]=0;
q.push(s);
while(!q.empty()){
u=q.front();
q.pop();
for(int i=head[u];i;i=e[i].next){
v=e[i].v;
if(dis[v]>dis[u]+e[i].w){
dis[v]=dis[u]+e[i].w;
if(!in[v]){
q.push(v);
in[v]=1;
}
}
}
}
for(int i=1;i<=n;i++) cout<<dis[i]<<' ';
return 0;
}
为什么输出除了本身 都是-1 减掉INF的后两位就是90分 拜托大佬了……俺要掉小珍珠了ㄒAㄒ