无批注题解-bfs
2025-07-17 21:19:35
发布于:广东
2阅读
0回复
0点赞
如果有帮助,不妨点个免费的赞呢~
#include<bits/stdc++.h>
using namespace std;
char mp[119][120];
bool vis[120][119];
int n, m, sum;
int dx[8]{-1,-1,-1,0,1,1,1,0};
int dy[8]{-1,0,1,1,1,0,-1,-1};
void bfs(int x, int y) {
queue<pair<int, int>> q;
q.push({x,y});
vis[x][y] = 1;
while (!q.empty()) {
auto t=q.front();
q.pop();
for (int i=0;i<8;i++) {
int nx = t.first+dx[i];
int ny = t.second+dy[i];
if (nx>=1&&nx<=n&&ny>=1&&ny<=m&&mp[nx][ny]=='W'&&!vis[nx][ny]) {
vis[nx][ny]=1;
q.push({nx, ny});
}
}
}
}
int main() {
cin>>n>>m;
for (int i=1;i<=n;i++){
for (int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
for (int i=1;i<=n;i++) {
for (int j=1;j<=m;j++) {
if (mp[i][j]=='W'&&!vis[i][j]) {
bfs(i,j);
sum++;
}
}
}
cout<<sum;
return 0;
}
全部评论 1
%%%
1周前 来自 江西
0
有帮助,赞一个