AC:5;TLE:4;WA:1
具体测评结果看这
代码:
#include<bits/stdc++.h>
int n,m,s,Edgecnt;
int head[10010],edge[10010];
int nxt[500010],to[500010];
int dis[10010],f[10010];
queue<int> q;
void add(int u,int v,int w){
Edgecnt++;
to[Edgecnt]=v,edge[Edgecnt]=w;
nxt[Edgecnt]=head[u],head[u]=Edgecnt;
}
void spfa(){
dis[s]=0;f[s]=1;q.push(s);
while(!q.empty()){
int x=q.front();q.pop();
v[x]=0;
for(int i=head[x];i;i=nxt[i]){
int tmp=to[i],val=edge[i];
if(dis[tmp]+val<dis[x]){
dis[x]=dis[tmp]+val;
if(!vis[tmp]){
q.push(y);
v[y]=1;
}
}
}
}
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
int from,to,val;
cin>>from>>to>>val;
add(from,to,val);
}
spfa();
for(int i=1;i<=n;i++) cout<<dis[i]<<endl;
return 0;
}
Thx