我要蒙圈了,一直30pts
查看原帖
我要蒙圈了,一直30pts
1432277
limoxuan0712楼主2025/7/31 12:38

提交了5次,一直30pts

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int dx[4]={1,0,-1,0};
const int dy[4]={0,-1,0,1};
char a[505][505];
int n,m;
int vis[505][505];
struct node{
	int x,y;
};
bool spif(int x,int y){
	return(x>=0 && x<=n+1 && y>=0 && y<=m+1 && !vis[x][y] && a[x][y]!='*');
}
void bfs(int i,int j){
	queue<node> q;
	q.push({i,j});
	vis[i][j]=1;
	while(!q.empty()){
		node now=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int fx=now.x+dx[i],fy=now.y+dy[i];
			if(spif(fx,fy)){
				q.push({fx,fy});
				vis[fx][fy]=1;
			} 
		}	
	}
}
signed main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>a[i][j];
	bfs(0,0);
	int ans=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			if(a[i][j]=='0' && !vis[i][j]) ans++;
	cout<<ans;
	return 0;
}
/*
5 6
00***0
00*0*0
00*0*0
**00**
0*****

4
*/ 
2025/7/31 12:38
加载中...