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

    ID: 14519 Type: RemoteJudge 6000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>POI(波兰)2025Special Judge

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

题目描述

Bajtyna 最近在一个可疑的网站上买了一个玩具。她没有收到著名的汉诺塔谜题,而是在邮箱里发现了 Hanoj 塔。

Hanoj 塔由 mm 个堆组成,上面分布着 nn 个两两不同的积木,编号为从 11nn 的整数。在游戏开始时以及游戏的任何时刻,每个堆上的积木编号必须按照从堆顶到堆底递增的顺序排列。

在一步移动中,玩家可以从任意堆取走顶部的积木,并将其放置在任意堆的底部。

Bajtyna 现在想知道,要将所有积木放置在同一个堆上,最少需要多少步移动。帮她解决这个谜题。

输入格式

输入的第一行包含两个整数 nnmm2n1062 \le n \le 10^6 ),分别表示积木的数量和堆的数量。堆用从 11mm 的整数编号。

接下来的 mm 行包含堆的描述。

ii 个堆(对于 1im1 \le i \le m)的描述由数字 ki,vi,1,vi,2,...,vi,kik_i,v_{i,1},v_{i,2}, ..., v_{i,k_i}0kin0 \le k_i \le n)组成,其中 kik_i 是第 ii 个堆上的积木数量,而 vi,1,...,vi,kiv_{i,1}, ..., v_{i,k_i} 是这些积木的编号,按从堆顶到堆底的顺序给出。

所有给出的积木具有范围从 11nn 的两两不同的编号,每个这样的积木都位于某个堆上(即 k1++km=nk_1 + \dots + k_m = n )。

输出格式

输出的第一行应打印一个整数 hh,表示解决谜题所需的最少移动次数。接下来的 hh 行应包含后续移动的描述。

ii 步移动(对于 1ih1 \le i \le h )的描述应由两个整数 ai,bia_i,b_i1ai,bim1 \le a_i, b_i \le m )组成,表示将堆 aia_i 的顶部元素移动到堆 bib_i 的底部。

如果无法解决谜题,则应只打印包含 1-1 的一行。

如果有多种可能的解决方案,只需打印其中任意一种。

3 3
1 2
2 1 3
0
3
2 3
1 3
2 3
7 3
4 1 2 5 7
1 4
2 3 6
-1

提示

样例解释

  • 样例 11 中,首先我们将积木 1 从第二个堆的顶部移动到空的第三个堆。接下来,我们将积木 2 从第一个堆移动到第三个堆的底部。最后,我们将积木 3 从第二个堆移动到第三个堆的底部。这样,在游戏的任何时刻,每个堆上的积木编号都是递增排序的,并且在三次移动后,所有积木都位于第三个堆上。

  • 样例 22 中,解决谜题是不可能的。

大样例

可以在附件中获得大样例。

样例 0a\texttt{0a}0b\texttt{0b} 是题面中展示的样例。此外:

  • 0c\texttt{0c}:10 个积木和两个堆,其中一个是空的。
  • 0d\texttt{0d}:1000 个积木和三个堆,其中一个是空的,其余两个分别包含编号为偶数和奇数的积木。
  • 0e\texttt{0e}10610^6 个堆和 10610^6 个积木,每个堆上有一个。

子任务

本题采用捆绑测试。

子任务编号 限制 得分
11 n6n \le 6 1515
22 ki=0k_i = 0 对于某些 i{1,,m}i \in \{1, \dots, m\} 2727
33 n1000n \le 1000 2222
44 m=3m = 3 1818
55 无额外限制 1818

如果你的答案只有第一行是正确的,你的解决方案将获得该测试 50%50\% 的分数。你不需要打印后续行即可获得这些分数。