{"raw_statement":[{"iden":"background","content":"这是一道交互题，你只需要实现代码中要求的函数。\n\n你的代码不需要引用任何额外的头文件，也不需要实现 `main` 函数。\n\n本题仅支持 C++ 语言提交。"},{"iden":"statement","content":"Debrecen 市有一片正方形的森林名叫 Nagyerdő，可以看作是 $N \\times N$ 的方格。\n方格的行由北向南从 $0$ 到 $N - 1$ 编号，列由西向东从 $0$ 到 $N - 1$ 编号。\n方格中第 $r$ 行第 $c$ 列的格子被称为单元格 $(r, c)$。\n\n森林里的每个单元格要么是**空**的，要么是**有树**的。\n森林里至少有一个空单元格。\n\nDVSC 是这个城市最著名的体育俱乐部，目前正计划在森林里修建一座新的足球场。\n大小为 $s$ 的球场（这里 $s \\ge 1$）是 $s$ 个**互不相同的空**单元格 $(r_0, c_0), \\ldots, (r_{s - 1}, c_{s - 1})$ 的集合。\n形式化地说，这意味着：\n\n- 对于从 $0$ 到 $s - 1$（包含两端）的每个 $i$，单元格 $(r_i, c_i)$ 是空的；\n- 对于满足 $0 \\le i \\lt j \\lt s$ 的每组 $i$ 和 $j$，$r_i \\neq r_j$ 和 $c_i \\neq c_j$ 二者中至少有一个成立。\n\n踢球时足球在球场的单元格之间传递。\n**直传**是以下两种动作之一：\n\n* 球场包含第 $r$ 行中单元格 $(r,a)$ 和 $(r,b)$ 之间的**全部**单元格，球从单元格 $(r,a)$ 传递到单元格 $(r,b)$（$0 \\le r,a,b \\lt N, a \\ne b$）。包含关系的形式化定义为：\n  - 若 $a \\lt b$，则球场应包含满足 $a \\le k \\le b$ 的每个单元格 $(r,k)$；\n  - 若 $a \\gt b$，则球场应包含满足 $b \\le k \\le a$ 的每个单元格 $(r,k)$。\n* 球场包含第 $c$ 列中单元格 $(a,c)$ 和 $(b,c)$ 之间的**全部**单元格，球从单元格 $(a,c)$ 传递到单元格 $(b,c)$（$0 \\le c,a,b \\lt N, a \\ne b$）。包含关系的形式化定义为：\n  - 若 $a \\lt b$，则球场应包含满足 $a \\le k \\le b$ 的每个单元格 $(k, c)$；\n  - 若 $a \\gt b$，则球场应包含满足 $b \\le k \\le a$ 的每个单元格 $(k, c)$。\n\n如果可以通过至多 $2$ 次直传将球从球场的任意单元格传递到另外的任意单元格，那么称这样的球场是**规则**的。\n注意，任何大小为 $1$ 的球场都是规则的。\n\n例如，考虑一片大小为 $N = 5$ 的森林，其中单元格 $(1,0)$ 和 $(4,2)$ 有树，其余单元格均为空。\n下图显示了三个可能的球场。有树的单元格用深色表示，组成球场的单元格划有斜线。\n\n![](https://cdn.luogu.com.cn/upload/image_hosting/rhrk04xf.png)\n\n左边的球场是规则的。然而，中间的球场不是规则的，原因是把球从单元格 $(4,1)$ 传递到单元格 $(4,3)$ 至少需要 $3$ 次直传。右边的球场也不是规则的，原因是无法通过直传将球从单元格 $(3,0)$ 传递到单元格 $(1,3)$。\n\n体育俱乐部希望建造尽可能大的规则球场。\n你的任务是找出最大的 $s$ 值，使得森林里可以建造大小为 $s$ 的规则球场。"},{"iden":"input","content":"你要实现以下函数：\n\n```\nint biggest_stadium(int N, int[][] F)\n```\n\n* $N$：森林的大小。\n* $F$：一个长度为 $N$ 的数组，每个元素都是长度为 $N$ 的数组，用于描述森林里的单元格。对于每组满足 $0 \\le r \\lt N$ 且 $0 \\le c \\lt N$ 的 $r$ 和 $c$，$F[r][c] = 0$ 表示单元格 $(r, c)$ 是空的，$F[r][c] = 1$ 表示该单元格是有树的。\n* 这个函数应该返回森林里可以建造的规则球场的最大大小。\n* 对于每个测试用例，这个函数恰好被调用一次。"},{"iden":"output","content":"考虑以下调用：\n\n```\nbiggest_stadium(5, [[0, 0, 0, 0, 0],  \n                    [1, 0, 0, 0, 0], \n                    [0, 0, 0, 0, 0], \n                    [0, 0, 0, 0, 0], \n                    [0, 0, 1, 0, 0]])\n```\n\n这个例子描述的森林显示在下图的左边，一个大小为 $20$ 的规则球场显示在下图的右边：\n\n![](https://cdn.luogu.com.cn/upload/image_hosting/c928srlk.png)\n\n由于不存在大小为 $21$ 或更大的规则球场，函数应该返回 $20$。"},{"iden":"note","content":"## 约束条件\n\n* $1 \\le N \\le  2\\,000$\n* $0 \\le F[i][j] \\le 1$（对满足 $0 \\le i \\lt N$ 且 $0 \\le j \\lt N$ 的所有 $i$ 和 $j$）\n* 森林里至少存在一个空单元格。也就是说，对于某组满足 $0 \\le i \\lt N$ 且 $0 \\le j \\lt N$ 的 $i$ 和 $j$，有 $F[i][j] = 0$。\n\n## 子任务\n\n1. （6 分）至多只有一个单元格有树。\n2. （8 分）$N \\le 3$\n3. （22 分）$N \\le 7$ \n4. （18 分）$N \\le 30$ \n5. （16 分）$N \\le 500$\n6. （30 分）没有额外的约束条件。\n\n在每个子任务中，如果你的程序能够正确判定**全部**空单元格组成的集合能否构成一个规则球场，那么你将在该子任务获得 25% 的部分分。\n\n更准确地讲，对于所有空单元格组成的集合是一个规则球场的测试用例，你的解答的得分情况如下：\n\n* 如果返回正确答案（也就是所有空单元格的数量），则得满分；\n* 否则得 0 分。\n\n对于所有空单元格组成的集合**不是**一个规则球场的测试用例，你的解答的得分情况如下：\n\n* 如果返回正确答案，则得满分；\n* 如果返回所有空单元格的数量，则得 0 分；\n* 如果返回其他值，则得 25% 的分数。\n\n每个子任务的得分是这个子任务中所有测试用例得分的最低值。\n\n## 评测程序示例\n\n评测程序示例按以下格式读取输入：\n\n* 第 $1$ 行：$N$\n* 第 $2 + i$ 行（$0 \\le i \\lt N$）：$F[i][0] \\; F[i][1] \\; \\ldots \\; F[i][N - 1]$\n\n评测程序示例按以下格式打印你的答案：\n\n* 第 $1$ 行：函数 `biggest_stadium` 的返回值"}],"translated_statement":null,"sample_group":[],"show_order":[],"formal_statement":null,"simple_statement":null,"has_page_source":false}