以下代码读入以下数据无法输出,是为什么呢
3 0 1
code:
#include<bits/stdc++.h>
using namespace std;
long long n,m,s,dis[100005],head[100005],cnt=0,a,b,c;
struct Edge{
long long v,w,next;
}ed[500005];
bool vi[100005]={0};
void add(int u,int v,int l){
cnt++;
ed[cnt].v=v;
ed[cnt].w=l;
ed[cnt].next=head[u];
head[u]=cnt;
return ;
}
void dij(){
for(int i=1;i<=n-1;i++){
long long now=0,zx=INT_MAX;
for(int j=1;j<=n;j++){
if(j!=s&&!vi[j]&&dis[j]<zx){
now=j;
zx=dis[j];
}
}
vi[now]=1;
for(int j=head[now];j!=-1;j=ed[j].next){
if(!vi[ed[j].v]&&ed[j].w+zx<dis[ed[j].v]) dis[ed[j].v]=ed[j].w+zx;
}
}
return;
}
int main(){
ios::sync_with_stdio(0);
cin>>n>>m>>s;
for(int i=1;i<=n;i++) head[i]=-1,dis[i]=INT_MAX;
for(int i=0;i<m;i++){
cin>>a>>b>>c;
add(a,b,c);
if(a==s&&b!=s) dis[b]=min(dis[b],c);
}
dij();
dis[s]=0;
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
return 0;
}
帮忙调下谢谢啦