c++广搜,全WA,求助
查看原帖
c++广搜,全WA,求助
738168
wang0728楼主2023/3/28 19:42
#include <bits/stdc++.h>
using namespace std;
int x,y,vis[505][505],ans;
char a[505][505];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
void dfs(int xx,int yy){
	int flag=0;
	if(vis[xx][yy]==1){
		return;
	}
	vis[xx][yy]=1;
	for(int i=0;i<4;i++){
		if(a[xx+dx[i]][yy+dy[i]]=='0' and xx+dx[i]<x and yy+dy[i]<y){
			dfs(xx+dx[i],yy+dy[i]);
			flag=1;
		}
	}
	if(flag==0){
		ans++;
	}
}
int main(){
	cin>>x>>y;
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			if(a[i][j]=='0'&&vis[i][j]==0){
				dfs(i,j);
			}
		}
	}
	cout<<ans;
	return 0;
}
2023/3/28 19:42
加载中...