2358. 苹果树采摘区域统计
1000ms
256MB
简单
深度优先搜索
BFS
题目描述
给定一个 $N \times M$ 的网格矩阵,表示一个采摘园的布局。矩阵中的每个格子代表一棵果树,其状态用数字表示:
- `1` 表示苹果树。
- `2` 表示梨树。
- `6` 表示采摘的起点(起点也是一棵苹果树)。
从起点出发,只能在相邻的苹果树(值为 `1` 或 `6`)之间移动(即在上下左右四个方向上移动),不能跨越或移动到梨树(值为 `2`)上。
请编写程序,计算从起点出发,最多可以到达多少棵苹果树(计算结果包含起点苹果树)。
输入格式
- 第一行包含两个以空格隔开的正整数 $N$ 和 $M$ ($2 < N < 51, \quad 2 < M < 51$),分别表示果树的行数和列数。
- 接下来 $N$ 行,每行包含 $M$ 个以空格隔开的整数,表示每个格子的树木类型(值为 `1`、`2` 或 `6`)。
输出格式
- 输出一行一个整数,表示从起点出发可以到达的苹果树总数。
样例 1
输入 (Input)
3 4 2 1 2 1 1 6 1 2 1 1 1 2
输出 (Output)
7
样例说明
- 对于 $100\%$ 的数据:$2 < N < 51, \quad 2 < M < 51$,且输入矩阵中仅包含一个 `6`。
- **样例说明**:
在输入的 $3 \times 4$ 矩阵中,起点 `6` 位于坐标 $(1, 1)$。可达的苹果树包括起点本身,以及通过连通路径可以到达的 6 棵值为 `1` 的苹果树。右上角的苹果树由于被梨树隔离,无法到达。因此可达苹果树总数为 7。
- **算法提示**:
这是一个经典的连通块搜索问题,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来实现。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功