2 条题解
-
-1
#include <iostream> #include <queue> using namespace std; int N,M,sum; char a[110][110]; int dx[] = {-1,-1,-1,0,0,1,1,1}; int dy[] = {1,0,-1,1,-1,1,0,-1}; struct Node { int x; int y; }; queue<Node>q; bool ia(int x,int y) { if (x >= 0 && x < N && y >= 0 && y < M && a[x][y] == 'W') { return true; } return false; } void bfs(int x,int y) { sum++; q.push((Node){x,y}); a[x][y] = 'F'; while (!q.empty()) { Node temp = q.front(); q.pop(); for (int i = 0;i < 8;i++) { int nx = temp.x + dx[i]; int ny = temp.y + dy[i]; if (ia(nx,ny) == true) { q.push((Node){nx,ny}); a[nx][ny] = 'F'; } } } } int main() { cin >> N >> M; for (int i = 0;i < N;i++) { for (int j = 0;j < M;j++) { cin >> a[i][j]; } } for (int i = 0;i < N;i++) { for (int j = 0;j < M;j++) { if (a[i][j] == 'W') { bfs(i,j); } } } cout << sum; return 0; }
信息
- ID
- 1351
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 256
- 已通过
- 110
- 上传者