为什么不能用BFS
查看原帖
为什么不能用BFS
255762
lyxleo楼主2021/2/16 10:00

是不能用BFS还是我代码有错误?

#include <bits/stdc++.h>
using namespace std;
int k,n,m;
int cows[101];
int x,y;
int cur,_try;
vector<int>v[1001];
queue<int>q;
int vis[1001];
int cnt[1001];
int ans;
int main(){
	scanf("%d %d %d",&k,&n,&m);
	for(int i=1;i<=k;++i){
		scanf("%d",&cows[i]);
	}
	for(int i=1;i<=m;++i){
		scanf("%d %d",&x,&y);
		v[x].push_back(y);
	}
	for(int i=1;i<=k;++i){
		vis[i] = true;
		q.push(i);
		while(!q.empty()){
			cur = q.front();
			++cnt[cur];
			q.pop(); 
			for(int j=0;j<v[cur].size();++j){
				if(!vis[v[cur][j]]){
					vis[v[cur][j]] = 1;
					q.push(v[cur][j]);
				}
			}
		}
		memset(vis,0,sizeof(vis));
	}
	for(int i=1;i<=n;++i){
		if(cnt[i] == k){
			++ans;
		}
	}
	printf("%d",ans);
	return 0;
}
2021/2/16 10:00
加载中...