bfs的问题0pts代码
查看原帖
bfs的问题0pts代码
681558
Weizhuo_Zhao楼主2024/12/14 18:19
#include<bits/stdc++.h>
#define yhy 1000005
using namespace std;
int n,m,dis[yhy],num[yhy];
bool b[yhy];
vector<int>f[yhy];
queue<int>q;

void bfs(){
	q.push(1);
	num[1]=1;
	//----------------
	while(!q.empty()){
		int l=f[q.front()].size();
		for(int i=0;i<l;i++){
			q.push(f[q.front()][i]);
			if(dis[f[q.front()][i]]>q.front()+1){
				dis[f[q.front()][i]]=q.front()+1;
				num[f[q.front()][i]]=1;
			}
			else if(dis[f[q.front()][i]]==q.front()+1)
				num[f[q.front()][i]]++;
		}
		q.pop();
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		dis[i]=INT_MAX;
	while(m--){
		int x,y;
		cin>>x>>y;
		if(x==y)
			continue;
		f[x].push_back(y); 
	}
	bfs();
	for(int i=1;i<=n;i++)
		cout<<num[i]<<'\n';
	return 0;
}
2024/12/14 18:19
加载中...