QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 512 MB مجموع النقاط: 100

#178. 布尔德洛的三国

الإحصائيات

你是布尔德洛特(Bourdelot)古代谱系图研究所的考古学家,专门研究布尔德洛特的三大王国。一天,在挖掘一座古遗迹时,你发现了一些关于布尔德洛特三大王国王朝的文件。由于布尔德洛特王国的早期历史笼罩在神秘之中,甚至许多国王和王后的名字都在历史中失传了,因此这些文件有望揭示古代王朝的血缘关系。

这些文件包含若干行,每一行由一对名字组成,推测是古代王室成员的名字。以下是一个包含两行内容的文件示例:

Alice Bob
Bob Clare

这些行本应是完整的句子,但文件损坏严重,因此你每行只能读到两个名字。起初,你认为所有这些行都描述了真实的祖先关系,但你发现这会导致矛盾。后来,你发现为了在没有矛盾的情况下理解祖先关系,有些文件应该被负面解读。形式上,一个文件要么被解读为正面文件,要么被解读为负面文件。

  • 在正面文件中,每一行左侧的人是右侧人的祖先。如果上述文件是正面文件,它应被解读为“Alice 是 Bob 的祖先,且 Bob 是 Clare 的祖先”。
  • 在负面文件中,每一行左侧的人不是右侧人的祖先。如果上述文件是负面文件,它应被解读为“Alice 不是 Bob 的祖先,且 Bob 不是 Clare 的祖先”。

单个文件绝不能混合正面和负面部分。上述文件绝不能解读为“Alice 是 Bob 的祖先,且 Bob 不是 Clare 的祖先”。

你还发现,存在一些并未直接出现在文件中,但可以通过以下规则推断出的祖先-后代关系:对于任何三人 $x, y$ 和 $z$,如果 $x$ 是 $y$ 的祖先,且 $y$ 是 $z$ 的祖先,那么 $x$ 是 $z$ 的祖先。例如,如果上述文件是正面文件,那么可以推断出“Alice Clare”这一祖先-后代关系。

你对两个王室成员之间的血缘关系很感兴趣。不幸的是,这些文件的解读方式(即哪些是正面的,哪些是负面的)是未知的。给定一组文件和两个不同的名字 $p$ 和 $q$,你的任务是找到一种文件解读方式,使其与“$p$ 是 $q$ 的祖先”这一假设不矛盾。如果存在某人 $x$ 和 $y$,使得从文件解读和假设中可以推断出以下情况,则该解读与假设矛盾:

  • $x$ 是 $y$ 的祖先,且 $y$ 是 $x$ 的祖先,或者
  • $x$ 是 $y$ 的祖先,且 $x$ 不是 $y$ 的祖先。

我们确信文件中提到的每个人都有一个唯一的单名,即没有两个人名字相同,且同一个人不会以不同的名字被提及。

当人 A 是人 B 的祖先时,人 A 可以是人 B 的父母、祖父母、曾祖父母等。此外,还可能存在未出现在文件中的人或祖先-后代关系。例如,对于图 F.1 所示的家谱,可能存在如下正面文件:

A H
B H
D H
F H
E I

其中人 C 和 G 未出现,且诸如“A E”、“D F”和“C I”之类的祖先-后代关系也未出现。

图 F.1. 家谱

输入格式

输入包含单个测试用例,格式如下:

$p \ q$ $n$ $c_1$ $\vdots$ $c_n$

第一行包含两个不同的名字 $p$ 和 $q$,以空格分隔。第二行包含一个整数 $n$,表示文件的数量。随后是 $n$ 个文件的描述。

第 $i$ 个文件 $c_i$ 的描述格式如下:

$m_i$ $x_{i,1} \ y_{i,1}$ $\vdots$ $x_{i,m_i} \ y_{i,m_i}$

第一行包含一个整数 $m_i$,表示该文件中的名字对数量。接下来的 $m_i$ 行,每行包含一对不同的名字 $x_{i,j}$ 和 $y_{i,j}$ ($1 \le j \le m_i$),以空格分隔。

每个名字由大小写字母组成,长度在 1 到 5 之间(含 1 和 5)。

测试用例满足以下数据范围:

  • $1 \le n \le 1000$
  • $1 \le m_i$
  • $\sum_{i=1}^{n} m_i \le 100000$,即文件中名字对的总数不超过 100000。
  • 测试用例中出现的不同名字的数量不超过 300。

输出格式

如果存在一种文件解读方式,使得其与“$p$ 是 $q$ 的祖先”这一假设不矛盾,则输出“Yes”(不含引号),否则输出“No”。

样例

样例输入 1

Alice Bob
3
2
Alice Bob
Bob Clare
2
Bob Clare
Clare David
2
Clare David
David Alice

样例输出 1

No

样例输入 2

Alice David
3
2
Alice Bob
Bob Clare
2
Bob Clare
Clare David
2
Clare David
David Alice

样例输出 2

Yes

样例输入 3

Alice Bob
1
2
Clare David
David Clare

样例输出 3

Yes

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.