1 条题解
-
1
#include<stdio.h> #include<queue> #include<string.h> int m, n; char c[120][120]; int num = 0; int dir[][2] = { {1,0},{1,1},{-1,-1},{-1,0},{0,1},{0,-1},{1,-1},{-1,1} }; struct node { int x; int y; }q[20000]; void bfs(int xa, int ya) { int head = 1, tail = 1; q[tail].x = xa; q[tail].y = ya; tail++; num++; while (head < tail) { int x = q[head].x; int y = q[head].y; for (int i = 0; i < 8; i++) { int nx = x + dir[i][0]; int ny = y + dir[i][1]; if (nx >= 0 && nx < m && ny >= 0 && ny < n && c[nx][ny] == 'W') { q[tail].x = nx; q[tail].y = ny; c[nx][ny] = '.'; tail++; } } head++; } } int main() { scanf("%d%d", &m, &n); for (int i = 0; i < m; i++) { scanf("%s", c[i]); } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (c[i][j] == 'W') { bfs(i, j); } } } printf("%d\n", num); return 0; }
- 1
信息
- ID
- 447
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 9
- 已通过
- 3
- 上传者