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 完成