#P14690. [ICPC 2025 Yokohama R] Membership Structure of a Secret Society

[ICPC 2025 Yokohama R] Membership Structure of a Secret Society

Description

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

该社团有一条独特的加入规则被严格执行:推荐可以由一个或多个现有成员进行,但同一个成员小组只能推荐一位新成员。例如,如果一名成员因现有成员小组 {A,B,C}\{A, B, C\} 的推荐而被允许加入,那么其他任何人都不能被同一个推荐人小组允许加入。然而,小组 {A,B}\{A, B\} 推荐另一位新成员是完全允许的。尽管集合 {A,B}\{A, B\}{A,B,C}\{A, B, C\} 的子集,但它们是不同的集合。为保持一致性,创始人的推荐人小组被视为空集。

通过对这个秘密社团的调查,你获得了若干信息片段,它们代表了社团成员结构的某些部分。每个信息片段采用以下形式的陈述之一,其中符号 aabbcc 是指定社团中某些成员的整数。

  • recommend aa bb
    表示成员 aa 属于推荐成员 bb 加入的那个小组。

  • not-recommend aa bb
    表示成员 aa 属于推荐成员 bb 加入的那个小组。

  • intersection aa bb cc
    表示成员 aa 的推荐人小组是成员 bb 的推荐人小组与成员 cc 的推荐人小组的交集。换句话说,所有推荐了 aa 的人也同时推荐了 bbcc,并且所有同时推荐了 bbcc 的人也推荐了 aa

即使在不同的陈述中,相同的整数也代表同一个成员。另一方面,即使在同一陈述中,不同的整数也可能是同一个人的别名。

获得的信息可能是不完整的,也就是说,某些成员的推荐信息可能缺失,而且可能存在一些在陈述中未被提及的成员。

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

Input Format

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

nn s1s_1 \vdots sns_n

第一行包含一个整数 nn,表示陈述的数量 (1n30001 \le n \le 3000)。接下来的 nn 行格式为 "recommend aa bb"、"not-recommend aa bb" 或 "intersection aa bb cc" 之一,其中 aabbcc 均为 113n3n(含)之间的整数。

所有测试用例的 nn 之和不超过 30003000

Output Format

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

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
no
no
no

Hint

翻译由 DeepSeek V3 完成