2346. 岛屿面积

1000ms 256MB 简单 广度优先搜索 BFS
题目描述
Nical 降落到了一个大小为 $n \times m$ 的网格游戏地图中,降落点坐标为 $(sx, sy)$。 地图中,数字 `1` 表示陆地,数字 `0` 表示海水。所有上下左右相邻的 `1` 连通块组成一个岛屿。 已知 Nical 的降落点一定是陆地。请编写程序,计算 Nical 所在岛屿的面积(即该连通块中 `1` 的个数)。 假设地图边界以外的区域全部为海水。
输入格式
- 第一行包含四个正整数 $n, m, sx, sy$ ($1 < n, m \le 50, \quad 1 \le sx \le n, \quad 1 \le sy \le m$)。 - 接下来 $n$ 行,每行包含 $m$ 个以空格隔开的整数(`0` 或 `1`),代表地图。
输出格式
- 输出一个整数,表示 Nical 所在的岛屿面积。
样例 1
输入 (Input)
6 6 3 4
0 1 0 1 1 0
0 0 0 1 1 1
1 0 1 1 0 1
0 0 0 1 0 0
0 1 1 1 1 0
0 0 0 0 0 0
输出 (Output)
13
- $1 < n, m \le 50$。 - 输入的坐标 $(sx, sy)$ 是从 1 开始计数的(1-indexed)。 - **算法提示**: 这是一个经典的**连通块面积计算**问题,可使用深度优先搜索(DFS)或广度优先搜索(BFS)解决: 1. 将输入的 1-indexed 坐标 $(sx, sy)$ 转换为 0-indexed 的数组下标 $(sx-1, sy-1)$。 2. 从该降落点出发,利用 DFS 或 BFS 向上下左右四个方向扩散。 3. 累计遍历到的陆地 `1` 的个数,并将遍历过的格子标记为已访问(或直接修改为 `0`),防止重复计算。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字