P14102 [ZJCPC 2017] What Kind of Friends Are You?

题目描述

Japari Park 是一个大型动物园,园内居住着现存物种、濒危物种、已灭绝物种、神秘生物以及一些传说中的生物。由于一种名为 $\textit{Sandstar}$ 的神秘物质,所有动物都化身为被称作 $\textit{Friends}$ 的拟人化少女。 Kaban 是一位年幼的少女,她在 Japari Park 醒来,却对自己是谁、从哪里来毫无记忆。虽然性格腼腆但十分机智,她与 Serval 一同游历 Japari Park,途中不断结识新的 $\textit{Friends}$,并最终发现自己其实是人类。 然而,Kaban 也发现辨认其他 $\textit{Friends}$ 同样十分重要。她的朋友 Serval 告诉 Kaban,可以通过一系列答案可能为“yes”或“no”的问题来辨认某一种 $\textit{Friend}$。 更具体地说,有 $n$ 个需要辨认的 $\textit{Friends}$。Kaban 会向她们每人提出相同的 $q$ 个问题,并收集她们的答案。对于每个问题,她还能获得完整名单:哪几个动物会对该问题回答“yes”(名单以外的动物则回答“no”)。因此,只要结合答案与名单,就有可能确定某个 $\textit{Friend}$ 的名字。 但这一工作量对 Kaban 来说太大了。你能帮她完成吗?

输入格式

输入包含多组测试数据。第一行为整数 $T$($1 \le T \le 100$),表示测试数据组数。接下来是 $T$ 组测试数据。 每组测试数据的第一行为两个整数 $n$($1 \le n \le 100$)和 $q$($1 \le q \le 21$),分别表示需要辨认的 $\textit{Friends}$ 数量和问题数量。 下一行包含一个整数 $c$($1 \le c \le 200$)以及 $c$ 个字符串 $p_1, p_2, \dots, p_c$($1 \le |p_i| \le 20$),表示所有已知的 $\textit{Friends}$ 名字。 接下来的 $q$ 行,每行第一个整数 $m_i$($0 \le m_i \le c$),后跟 $m_i$ 个字符串 $s_{i,1}, s_{i,2}, \dots, s_{i,m_i}$($1 \le |s_{i,j}| \le 20$),表示第 $i$ 个问题中,会回答“yes”的 $\textit{Friends}$ 的数量及她们的名字。保证这些名字都出现在已知的名字列表中。 再之后的 $n$ 行,每行包含 $q$ 个整数 $a_{i,1}, a_{i,2}, \dots, a_{i,q}$($0 \le a_{i,j} \le 1$),表示第 $i$ 个需要辨认的 $\textit{Friend}$ 对于每个问题的回答($0$ 表示“no”,$1$ 表示“yes”)。 保证所有输入中的名字仅包含大小写英文字母。

输出格式

对于每组测试数据,输出 $n$ 行。如果 Kaban 能确定第 $i$ 个待辨认 $\textit{Friend}$ 的名字,则在第 $i$ 行输出该名字。否则输出 “Let's go to the library!!”。

说明/提示

第一个样例说明如下: 由于只有 Serval 会对第 $1$、$2$、$4$ 个问题回答“yes”,对第 $3$ 个问题回答“no”,所以我们在第一行输出 “Serval”。 由于没有动物全部问题都回答“no”,因此第二行输出 “Let's go to the library!!”。 Alpaca 与 Moose 都会对第 $1$ 个问题回答“yes”,其余问题都回答“no”,所以无法确定他们各自的身份,因此在第三行输出 “Let's go to the library!!”。 由 ChatGPT 5 翻译