海战(广度优先搜索)
2024-07-28 17:36:34
发布于:北京
#include<bits/stdc++.h>
using namespace std;
int n,m;
int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int a[5005][5005];
int s=0;
struct node{
int x,y;
};
void dfs(int x,int y){
queue<node>b;
b.push({x,y});
a[x][y]=0;
while(!b.empty()){
node t=b.front();
b.pop();
for(int i=0;i<4;i++){
int tx=t.x+d[i][0];
int ty=t.y+d[i][1];
if(tx<0||tx>n||ty<0||ty>m||a[tx][ty]==0)continue;
a[tx][ty]=0;
b.push({tx,ty});
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
char c;
cin>>c;
a[i][j]=c-'0';
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]!=0){
dfs(i,j);
s++;
}
}
}
cout<<s;
return 0;
}[链接描述](https://www.acgo.cn/problemset/info/19383?homeworkId=1492&teamCode=1768162775202656256)
这里空空如也
有帮助,赞一个