#P13284. [GCJ 2013 Qualification] Treasure

    ID: 13094 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>图论2013欧拉回路Google Code Jam

[GCJ 2013 Qualification] Treasure

Description

按照一张古老的地图,你偶然发现了臭名昭著的海盗 Larry 的秘密宝藏!

宝藏由 NN 个上锁的箱子组成,每个箱子只能用某一种特定类型的钥匙打开。而且,每把钥匙一旦用来打开一个箱子,就不能再重复使用。当然,每个箱子里都藏有大量宝藏,同时你还可能找到一把或多把可以用来打开其他箱子的钥匙。一个箱子里可能包含多把相同类型的钥匙,并且你可以持有任意数量的钥匙。

你一开始就至少拥有一把钥匙,你的地图还标明了各个箱子里可以找到哪些钥匙。已知所有这些信息,你能否想出一种方法,打开所有的箱子?

例如,假设宝藏由下表所示的四个箱子组成,并且你起始时恰好有一把类型为 11 的钥匙:

箱子编号 打开所需钥匙类型 箱内钥匙类型
1 1
2 1, 3
3 2
4 3 2

在这个例子中,如果你按照 22114433 的顺序打开箱子,就能全部打开。如果你一开始就打开第 11 号箱子,那么你会用光唯一的一把钥匙,接下来就无法继续了。

Input Format

输入的第一行为测试用例数 TT。接下来是 TT 个测试用例。每个测试用例的第一行为两个正整数 KKNN,分别表示你起始时拥有的钥匙数量以及需要打开的箱子数量。

接下来一行包含 KK 个整数,表示你起始时拥有的钥匙类型。

之后有 NN 行,每行描述一个箱子。每行首先是两个整数 TiT_iKiK_i,分别表示打开该箱子所需的钥匙类型,以及箱子内钥匙的数量。接下来是 KiK_i 个整数,表示箱子内包含的钥匙类型。

Output Format

对于每个测试用例,输出一行 "Case #x: C_1 C_2 ... C_N",其中 xx 是测试用例编号(从 11 开始),CiC_i 表示你应当打开的第 ii 个箱子的编号(从 11 开始)。

如果存在多种打开所有箱子的方式,选择字典序最小的一种。也就是说,优先让 C1C_1 尽可能小,若 C1C_1 有多种选择,则让 C2C_2 尽可能小,依此类推。

如果无法打开所有箱子,则输出一行 "Case #x: IMPOSSIBLE"

3
1 4
1
1 0
1 2 1 3
2 0
3 1 2
3 3
1 1 1
1 0
1 0
1 0
1 1
2
1 1 1
Case #1: 2 1 4 3
Case #2: 1 2 3
Case #3: IMPOSSIBLE

Hint

限制条件

  • 1T251 \leq T \leq 25
  • 1K1 \leq K
  • 所有钥匙类型均为 11200200 之间的整数

小数据集(20 分,测试集 1 - 可见)

  • 1N201 \leq N \leq 20
  • 每个测试用例中,所有钥匙总数不超过 4040

大数据集(60 分,测试集 2 - 隐藏)

  • 1N2001 \leq N \leq 200
  • 每个测试用例中,所有钥匙总数不超过 400400

翻译由 ChatGPT-4.1 完成。