40分 2 4 5点错了. 第2个点我试了答案是对的就a不了
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<set>
#include<stack>
using namespace std;
const int MAXN=1000000;
const int INF=100003;
int tot=0;
struct Node
{
int to,next;
}e[MAXN*4];
int n,m,vis[MAXN+10],head[MAXN+10],ans[MAXN+10],cl[MAXN+10];
queue<int> a;
void add(int x,int y)
{
e[++tot].next=head[x];
e[tot].to=y;
head[x]=tot;
}
void BFS()
{
int index=1,z=1;
while(!a.empty())
{
int c=a.front();
a.pop();
for(int i=head[c];i;i=e[i].next)
{
int v=e[i].to;
if(!vis[v])
{
if(c==index)
{
z++;
index=v;
}
a.push(v);
vis[v]=1;
cl[v]=z;
}
if(cl[c]+1==cl[v])
ans[v]=(ans[v]+ans[c])%INF;
}
}
}
int main()
{
cin>>n>>m;
memset(ans,0,sizeof(ans));
memset(vis,0,sizeof(vis));
memset(cl,0,sizeof(cl));
memset(head,0,sizeof(head));
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
add(x,y);
add(y,x);
}
ans[1]=1;
vis[1]=1;
cl[1]=1;
a.push(1);
BFS();
for(int i=1;i<=n;i++)
{
cout<<ans[i]<<endl;
}
}