P14690 [ICPC 2025 Yokohama R] 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。
说明/提示
翻译由 DeepSeek V3 完成