本地运行下载的样例都是对的,但提交上去错误
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,vis[105][105],bl[4][2]={0,1,0,-1,1,0,-1,0};
char a[105][105];
queue<pair<int,int>> q;
void bfs(int x,int y){
q.push({x,y});
vis[x][y]=1;
while(!q.empty()){
int nowx=q.front().first;
int nowy=q.front().second;
q.pop();
for(int i=0;i<n;i++){
int newx=nowx+bl[i][0],newy=nowy+bl[i][1];
if(newx>=1&&newx<=n&&newy>=1&&newy<=m&&vis[newx][newy]==0&&a[newx][newy]!='0'){
q.push({newx,newy});
vis[newx][newy]=1;
}
}
}
}
int main(){
cin>>n>>m;
memset(a,'0',sizeof(a));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(a[i][j]!='0'&&vis[i][j]==0){
bfs(i,j);
cnt++;
}
}
}
cout<<cnt;
return 0;
}