#4:Wrong Answer.wrong answer On line 99954 column 1, read 0, expected 7.
是超时还是咋了这题一定要用链式向前星吗
#5:Wrong Answer.wrong answer On line 128 column 1, read 0, expected 6.
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
int n,m;
const int n1=2000005;
int d[n1],vis[n1];
int ans[n1];
struct node{
int ne;
};
vector<node>e[2000005];
queue<int>q;
inline int read()
{
int s=0;int w=1;
char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-')w*=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void spfa()
{
while(q.size())
{
int u=q.front();
q.pop();
vis[u]=0;
for(auto i:e[u])
{
int v=i.ne;
if(d[v]>d[u]+1)
{
d[v]=d[u]+1;
ans[v]=ans[u];
if(!vis[v]){q.push(v);vis[v]=1;}
}
else if(d[v]==d[u]+1){
ans[v]+=ans[u];
ans[v]=ans[v]%100003;
}
}
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int u=read();
int v=read();
e[u].push_back((node){v});
e[v].push_back((node){u});
}
for(int i=1;i<=n;i++)
{
d[i]=0x3f;
vis[i]=0;
}
ans[1]=1;
d[1]=0;
q.push(1);
vis[1]=1;
spfa();
for(int i=1;i<=n;i++)cout<<ans[i]<<endl;
return 0;
}