请求大佬指出问题
#include<bits/stdc++.h>
using namespace std;
const int MX=1000000000;
const int N=1e5+10;
const int mod=100003;
int n,m,s,head[N],tot,dis[N],ans[N],b[N];
struct node{
int u,v,next;
}e[200010];
struct node1{
int u,dis;
friend bool operator<(node1 a,node1 b){
return a.dis>b.dis;
}
};
void add(int u,int v){
e[++tot]={u,v,head[u]};
head[u]=tot;
}
void dj(int s){
for(int i=1;i<=n;i++){
if(i!=s)dis[i]=MX;
}
dis[s]=0;
priority_queue<node1> q;
q.push({s,0});
while(!q.empty()){
node1 tmp=q.top();
q.pop();
int u=tmp.u;
if(b[u]==1) continue;
b[u]=1;
for(int i=head[u];i;i=e[i].next){
int v=e[i].v,w=1;
if(dis[v]>dis[u]+w){
dis[v]=dis[u]+w;
ans[v]=ans[u];
q.push({v,dis[v]});
}else if(dis[v]==dis[u]+w){
ans[v]+=ans[u];
ans[v]%=mod;
}
}
}
}
int main(){
ans[1]=1;
int x,y,z;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
add(x,y);
}
dj(1);
for(int i=1;i<=n;i++){
cout<<ans[i]<<"\n";
}
return 0;
}