#include <bits/stdc++.h>
#include <iomanip>
#include <iostream>
#include <cstring>
using namespace std;
struct edge {
int next;
int to;
int w;
} edge[1000005];
int head[1000000], cnt;
long long ans[1000005],dis[100000];
void add(int u, int v) {
edge[++cnt].to = v;
edge[cnt].next = head[u];
head[u] = cnt;
}
int n, m, s, u, v, w;
bool check[10000000];
queue<int> q;
int main() {
cin >> n >> m ;
for (int i = 1; i <= m; i++) {
scanf("%d%d", &u, &v);
add(u, v);
add(v, u);
}
memset(dis,1e9,n);
dis[1]=0;
ans[1] = 1;
check[1] = 1;
q.push(1);
while (!q.empty()) {
int u = q.front();
q.pop();
check[u]=0;
for (int i = head[u]; i ; i = edge[i].next) {
int v = edge[i].to;
if (dis[v] > dis[u]+1) {
dis[v] = dis[u]+1 ;
ans[v] = ans[u] ;
if (!check[v]) {
q.push(v);
check[v]=1;
}
} else if(dis[v]==dis[u]+1) {
ans[v]+=ans[u];
ans[v]%=100003;
}
}
}
for (int i = 1; i <= n; i++) {
cout << ans[i] << endl;
}
return 0;
}
各位大佬,为什么我的输出全是0?