#4504. 能养几只公羊

    ID: 4504 传统题 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>搜索基础第二十二讲(Level2)GESP 2级

能养几只公羊

能养几只公羊

题目描述

有一个农夫有个 n×m 大小的农场,农场的四周有墙把农场跟外面隔离开,同时农场里也有一些隔离墙,其余的是空地。

农夫想养一些公羊,但是公羊好斗,而且公羊在农场里会上、下、左、右四处走动(但不能穿过墙),两只公羊不能见面(见面就会顶角受伤),为了不让公羊受伤,农夫想知道他的农场最多能养几只公羊?

为了方便起见,农场的描述用 0 和 1 表示,0 表示空地,1 表示墙。

例如,农夫有个 4×5 的农场,图形如下:

1 0 1 1 1
1 0 1 0 1
1 1 1 1 0
1 0 0 0 0

这个农场可以养 3 只公羊。

输入格式

第一行输入 n 和 m,表示农场大小是 n×m,其中 1≤n,m≤1000。

接下来是一个 n×m 的矩阵,矩阵里每个值是 0 或者 1。

输出格式

一行,一个整数,表示农夫能养的公羊数量。

样例输入 #1

4 5
1 0 1 1 1
1 0 1 0 1
1 1 1 1 0
1 0 0 0 0

样例输出 #1

3

数据范围

1 ≤ n, m ≤ 1000

知识点与难度

本题涉及的知识点从属于 GESP二级(BFS/DFS搜索、连通分量),难度等级:⭐⭐⭐


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 / 特殊性质
2 15 9~11 Hack
3 30 12~20 中大规模
4 25 21~25 随机回归