P14646 [POI 2025/2026 #1] 并非哈诺塔 / Hanoj

题目描述

Bajtyna 最近在一个可疑的网站上买了一个玩具。她没有收到著名的汉诺塔谜题,而是在邮箱里发现了 Hanoj 塔。 Hanoj 塔由 $m$ 个堆组成,上面分布着 $n$ 个两两不同的积木,编号为从 $1$ 到 $n$ 的整数。在游戏开始时以及游戏的任何时刻,每个堆上的积木编号必须按照从堆顶到堆底递增的顺序排列。 在一步移动中,玩家可以从任意堆取走顶部的积木,并将其放置在任意堆的底部。 Bajtyna 现在想知道,要将所有积木放置在同一个堆上,最少需要多少步移动。帮她解决这个谜题。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$ ( $2 \le n \le 10^6$ ),分别表示积木的数量和堆的数量。堆用从 $1$ 到 $m$ 的整数编号。 接下来的 $m$ 行包含堆的描述。 第 $i$ 个堆(对于 $1 \le i \le m$)的描述由数字 $k_i,v_{i,1},v_{i,2}, ..., v_{i,k_i}$( $0 \le k_i \le n$)组成,其中 $k_i$ 是第 $i$ 个堆上的积木数量,而 $v_{i,1}, ..., v_{i,k_i}$ 是这些积木的编号,按从堆顶到堆底的顺序给出。 所有给出的积木具有范围从 $1$ 到 $n$ 的两两不同的编号,每个这样的积木都位于某个堆上(即 $k_1 + \dots + k_m = n$ )。

输出格式

输出的第一行应打印一个整数 $h$,表示解决谜题所需的最少移动次数。接下来的 $h$ 行应包含后续移动的描述。 第 $i$ 步移动(对于 $1 \le i \le h$ )的描述应由两个整数 $a_i,b_i$ ( $1 \le a_i, b_i \le m$ )组成,表示将堆 $a_i$ 的顶部元素移动到堆 $b_i$ 的底部。 如果无法解决谜题,则应只打印包含 $-1$ 的一行。 如果有多种可能的解决方案,只需打印其中任意一种。

说明/提示

### 样例解释 - 样例 $1$ 中,首先我们将积木 1 从第二个堆的顶部移动到空的第三个堆。接下来,我们将积木 2 从第一个堆移动到第三个堆的底部。最后,我们将积木 3 从第二个堆移动到第三个堆的底部。这样,在游戏的任何时刻,每个堆上的积木编号都是递增排序的,并且在三次移动后,所有积木都位于第三个堆上。 - 样例 $2$ 中,解决谜题是不可能的。 ### 大样例 可以在附件中获得大样例。 样例 $\texttt{0a}$ 和 $\texttt{0b}$ 是题面中展示的样例。此外: - $\texttt{0c}$:10 个积木和两个堆,其中一个是空的。 - $\texttt{0d}$:1000 个积木和三个堆,其中一个是空的,其余两个分别包含编号为偶数和奇数的积木。 - $\texttt{0e}$:$10^6$ 个堆和 $10^6$ 个积木,每个堆上有一个。 ### 子任务 本题采用捆绑测试。 | 子任务编号 | 限制 | 得分 | | :---------: | :--------------------- | :-----: | | $1$ | $n \le 6$ | $15$ | | $2$ | $k_i = 0$ 对于某些 $i \in \{1, \dots, m\}$ | $27$ | | $3$ | $n \le 1000$ | $22 $ | | $4$ | $m = 3$ | $18 $ | | $5$ | 无额外限制 | $18$ | 如果你的答案只有第一行是正确的,你的解决方案将获得该测试 $50\%$ 的分数。你不需要打印后续行即可获得这些分数。