#P1208. 路径规划

    ID: 209 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>广东省第二十届大学生程序设计竞赛(GDCPC2023)

路径规划

Description

有一个 \(n\)\(m\) 列的网格。网格里的每个格子都写着一个整数,其中第 \(i\) 行第 \(j\) 列的格子里写着整数 \(a_{i, j}\)。从 \(0\)\((n \times m - 1)\) 的每个整数(含两端)在网格里都恰好出现一次。

\((i, j)\) 表示位于第 \(i\) 行第 \(j\) 列的格子。您现在需要从 \((1, 1)\) 出发并前往 \((n, m)\)。当您位于格子 \((i, j)\) 时,您可以选择走到右方的格子 \((i, j + 1)\)(若 \(j < m\)),也可以选择走到下方的格子 \((i + 1, j)\)(若 \(i < n\))。

\(\mathbb{S}\) 表示路径上每个格子里的整数形成的集合,包括 \(a_{1, 1}\)\(a_{n, m}\)。令 \(\text{mex}(\mathbb{S})\) 表示不属于 \(\mathbb{S}\) 的最小非负整数。请找出一条路径以最大化 \(\text{mex}(\mathbb{S})\),并求出这个最大的值。

Input

有多组测试数据。第一行输入一个整数 \(T\) 表示测试数据组数。对于每组测试数据:

第一行输入两个整数 \(n\)\(m\)\(1 \le n, m \le 10^6\)\(1 \le n \times m \le 10^6\))表示网格的行数和列数。

对于接下来 \(n\) 行,第 \(i\) 行输入 \(m\) 个整数 \(a_{i, 1}, a_{i, 2}, \cdots, a_{i, m}\)\(0 \le a_{i, j} < n \times m\)),其中 \(a_{i, j}\) 表示格子 \((i, j)\) 里的整数。从 \(0\)\((n \times m - 1)\) 的每个整数(含两端)在网格里都恰好出现一次。

保证所有数据 \(n \times m\) 之和不超过 \(10^6\)

Output

每组数据输出一行一个整数,表示最大的 \(\text{mex}(\mathbb{S})\)

2
2 3
1 2 4
3 0 5
1 5
1 3 0 4 2
3
5

Hint

对于第一组样例数据,共有 \(3\) 条可能的路径。

  • 第一条路径为 \((1, 1) \to (1, 2) \to (1, 3) \to (2, 3)\)\(\mathbb{S} = \{1, 2, 4, 5\}\) 因此 \(\text{mex}(\mathbb{S}) = 0\)
  • 第二条路径为 \((1, 1) \to (1, 2) \to (2, 2) \to (2, 3)\)\(\mathbb{S} = \{1, 2, 0, 5\}\) 因此 \(\text{mex}(\mathbb{S}) = 3\)
  • 第三条路径为 \((1, 1) \to (2, 1) \to (2, 2) \to (2, 3)\)\(\mathbb{S} = \{1, 3, 0, 5\}\) 因此 \(\text{mex}(\mathbb{S}) = 2\)

因此答案为 \(3\)

对于第二组样例数据,只有 \(1\) 条可能的路径,即 \((1, 1) \to (1, 2) \to (1, 3) \to (1, 4) \to (1, 5)\)\(\mathbb{S} = \{1, 3, 0, 4, 2\}\) 因此 \(\text{mex}(\mathbb{S}) = 5\)