c++BFS代码 样例过 全WA 求助
查看原帖
c++BFS代码 样例过 全WA 求助
792362
cxk_Yabot楼主2023/5/11 14:16

有没有大佬帮帮啊(悲

#include<bits/stdc++.h>
using namespace std;
bool vis[505][505];
char mmap[505][505];
int m,n;
int ans;
int dx[10]={0,1,-1,0, 0};
int dy[10]={0,0, 0,1,-1};
struct node{
	int a,b;
}top;
queue<node> q;
bool check(node w){
	if(w.a>m||w.b>n||w.a<0||w.b<0)return 0;
	if(vis[w.a][w.b]==1)return 0;
	if(mmap[w.a][w.b]=='*')return 0;
	return 1;
}
void bfs(node in){
	q.push(in);
	vis[in.a][in.b]=1;
	while(!q.empty()){
		top=q.front();
		q.pop();
		for(int i=1;i<=4;i++){
			node xy;
			xy.a=top.a+dx[i];
			xy.b=top.b+dy[i];
			if(!check(xy))continue;
			vis[xy.a][xy.b]=1;
			q.push(xy);
		}
	}
}
int main(){
	scanf("%d%d",&m,&n);
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			cin>>mmap[i][j];
		}
	}
	top.a=0,top.b=0;
	bfs(top);
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			if(vis[i][j]==0&&mmap[i][j]=='0'){
				ans++;
//				cout<<i<<" "<<j<<endl;
			}
		}
	}
	printf("%d",ans);
	return 0;
}	
2023/5/11 14:16
加载中...