求助帮忙查错
查看原帖
求助帮忙查错
121813
老子是北瓜楼主2020/9/13 15:49

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;
}
2020/9/13 15:49
加载中...