rt,我找了好长时间,感觉没啥错
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
using namespace std;
int n,m;
int ans[1000003],len[1000003],q[1000003][2];
vector<vector<int> > g(1000003);
void bfs(){
int l=0,r=1;
q[1][0]=1;
q[1][1]=1;
ans[1]=1;
while(l<r){
++l;
int u=q[l][0];
int time=q[l][1];
for(int i=0; i<g[u].size(); ++i)
if(len[g[u][i]]>=time+1){
len[g[u][i]]=time+1;
++ans[g[u][i]];
++r;
q[r][0]=g[u][i];
q[r][1]=time+1;
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1; i<=n; ++i)
len[i]=999999999;
int x,y;
for(int i=1; i<=m; ++i){
scanf("%d%d",&x,&y);
g[x].push_back(y);
}
bfs();
for(int i=1; i<=n; ++i)
cout<<ans[i]<<endl;
return 0;
}