QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#15627. Membership Structure of a Secret Society

統計

一个未公开名称的秘密社团成立于 1899 年,由一位创始人创立,其姓名也保密。后续成员通过现有成员的推荐加入该社团。

加入该社团有一条独特的规则被严格执行:推荐可以由一名或多名现有成员共同做出,但同一成员组只能推荐一名新成员。例如,如果某成员在现有成员组 $\{A, B, C\}$ 的推荐下获准加入,则其他任何人不得再由该推荐组推荐加入。然而,由 $\{A, B\}$ 组成的组推荐另一名新成员是完全可以接受的。尽管 $\{A, B\}$ 是 $\{A, B, C\}$ 的子集,但它们是不同的集合。为保持一致性,创始人的推荐组被视为空集。

通过对该秘密社团的调查,你获得了一些信息片段,代表了该社团成员结构的一部分。每个信息片段采用以下形式的陈述之一,其中符号 $a, b$ 和 $c$ 是代表社团中特定成员的整数。

recommend a b 意为成员 $a$ 属于推荐成员 $b$ 加入的那个组。

not-recommend a b 意为成员 $a$ 不属于推荐成员 $b$ 加入的那个组。

intersection a b c 意为成员 $a$ 的推荐组是成员 $b$ 的推荐组与成员 $c$ 的推荐组的集合交集。换句话说,所有推荐 $a$ 的人同时也推荐了 $b$ 和 $c$,且所有同时推荐了 $b$ 和 $c$ 的人也都推荐了 $a$。

同一个整数的两次或多次出现代表同一个成员,即使在不同的陈述中也是如此。另一方面,两个或多个不同的整数可能是同一个人的别名,即使在单个陈述中也是如此。

所获得的信息可能是局部的,即某些成员的推荐情况可能缺失,此外,可能还有一些成员未在任何陈述中提及。

由于信息来源不一定可靠,可能混入了一些虚假信息。你想要知道这些陈述是否一致,即是否存在一种符合所有这些陈述的推荐关系。

输入格式

输入包含一个或多个测试用例。输入的第一行包含一个整数 $t$ ($1 \le t \le 3000$),表示测试用例的数量。接下来是 $t$ 个测试用例的描述,每个测试用例格式如下:

$n$ $s_1$ $\vdots$ $s_n$

第一行包含一个整数 $n$,表示陈述的数量 ($1 \le n \le 3000$)。接下来的 $n$ 行中,每一行都是 “recommend a b”、“not-recommend a b” 或 “intersection a b c” 格式之一,其中 $a, b$ 和 $c$ 均为 $1$ 到 $3n$ 之间的整数(包含边界)。

所有测试用例的 $n$ 之和不超过 3000。

输出格式

对于每个测试用例,如果陈述中描述的情况是可能的,则在一行中输出 yes,否则输出 no

样例

输入 1

3
2
recommend 1 2
not-recommend 1 2
2
recommend 1 2
recommend 2 1
3
intersection 1 2 2
recommend 1 3
not-recommend 2 3

输出 1

no
no
no

输入 2

4
3
intersection 3 2 1
recommend 3 2
not-recommend 3 1
4
intersection 1 2 3
recommend 4 2
recommend 4 3
not-recommend 4 1
3
intersection 3 2 1
recommend 2 5
intersection 3 4 5
5
recommend 1 3
not-recommend 2 3
not-recommend 3 2
not-recommend 1 2
not-recommend 2 1

输出 2

yes
no
yes
yes

说明

在样例输入 1 中,所有测试用例描述的情况都是不可能的。

  • 在第一个测试用例中,两条陈述显然相互矛盾。
  • 在第二个测试用例中,第一条陈述暗示成员 1 先加入社团,随后成员 2 加入,因为否则成员 1 不可能推荐成员 2。然而,第二条陈述暗示了相反的顺序。同时满足这两者是不可能的。
  • 在第三个测试用例中,第一条陈述本质上说成员 1 的推荐集与成员 2 的推荐集相同。由于没有两个成员拥有相同的推荐集,因此 1 和 2 必须指代同一个成员。那么,第二条和第三条陈述就是矛盾的。

样例输入 2 的第一个测试用例是可能的。有许多可能的场景。一个例子如下:成员 3 实际上是创始人,成员 2 在 $\{3\}$ 的推荐下加入,成员 1 在 $\{2\}$ 的推荐下加入。

样例输入 2 的最后一个测试用例也是可能的。注意,社团中的所有成员不一定都要在信息中提及。社团中至少必须有 4 名成员。

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.