求助各位大佬!! 请问这个代码应该怎么改才是正确的啊啊啊 万分感谢!
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
char a[N][N];
bool st[N][N];
int n,m;
int ans;
typedef pair<int,int>PII;
#define x first
#define y second
PII q[N];
int dx[4] = {-1,0,1,0};
int dy[4] = {0,-1,0,1};
void bfs(int x,int y)
{
if(st[x][y]) return;
int hh = 0,tt = 0;
q[0] = {x,y};
while(hh<=tt)
{
bool flag = true;
auto t = q[hh++];
for(int i = 0; i<4; i++)
{
int nx = t.x+dx[i],ny = t.y+dy[i];
if(st[nx][ny]||nx>=n||ny>=m||nx<0||ny<0)
continue;
st[nx][ny] = true;
if(a[nx][ny]=='0')
flag = false;
if(a[nx][ny]!='0')
q[++tt] = {nx,ny};
}
if(flag==true)
ans++;
}
}
int main()
{
cin>>n>>m;
for(int i= 0; i<n; i++)
{
cin>>a[i];
}
for(int i = 0; i<n; i++)
{
for(int j = 0; j<m; j++)
if(a[i][j]!='0')
{
bfs(i,j);
}
}
cout<<ans;
}