你是一位渴望成为下一任“剑术大师”(Swordmaster)的决斗者。你将通过与对手决斗来争取这一头衔,直到你战胜每一位对手。每位对手随时都可以进行决斗,且对手之间不会互相决斗。
每位决斗者(包括你)至少掌握一种攻击方式和一种防御方式。世界上最多有 $P$ 种攻击与防御的配对;第 $i$ 种防御只能反制第 $i$ 种攻击,而第 $i$ 种攻击也只能被第 $i$ 种防御反制。可能存在没有任何决斗者掌握的攻击和/或防御。你可以根据需要多次使用你掌握的任何攻击或防御;它们不会被“消耗”。
以下是与对手进行单场决斗的规则:
- 作为渴望成为剑术大师的你,总是先手攻击。你选择一种你掌握的攻击。如果对手掌握相应的防御,他们可以选择使用它。如果他们不掌握该防御,或者他们选择不使用它,那么他们就不会进行防御。
- 然后,对手选择一种他们掌握的攻击。如果你掌握相应的防御,你可以选择使用它。如果你不掌握该防御,或者你选择不使用它,那么你就不会进行防御。
- 如果你成功防御而对手没有,你就赢得了这场决斗!否则,你没有获胜,但你成为剑术大师的征程可以继续。
你可以进行任意次数的决斗,包括与同一位对手进行多次决斗,无论之前决斗的结果如何。你不需要提前确定完整的决斗计划;你可以根据已经发生的情况做出下一个决定。一旦你至少战胜过每一位对手一次,你就成为了剑术大师!
你是一位学习能力特别强的人。在每场决斗后,无论决斗结果如何,你都可以将对手使用的攻击和防御(如果有)加入到你自己掌握的攻击/防御集合中。(注意:如果对手对你使用了你未知的防御,你在该场决斗中无法学会它,因此你无法在该场决斗中用它来反制对手的攻击。)只有你拥有这一优势;你的对手所掌握的攻击和防御永远不会改变。
此外,在你战胜某位对手后,在进行下一场决斗之前,该对手会教给你所有他们掌握而你尚未掌握的攻击和防御。(一旦他们输给了你,如果你最终成为了剑术大师,这对他们来说会更好看!)
你知道每位对手掌握哪些攻击和防御。如果你做出最优选择,是否有可能保证你一定会成为剑术大师,无论你的对手做出什么选择?
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。 每个测试用例的第一行包含两个整数 $N$ 和 $P$:决斗者的数量(包括你)以及世界上攻击/防御配对的最大数量。 然后是 $N$ 组,每组三行。这些组中的第 $i$ 组代表其中一位决斗者;特别地,第一组代表你。每组具有以下结构:
- 一行包含两个整数 $Attacksi$ 和 $Defensesi$:第 $i$ 位决斗者掌握的不同攻击和防御的数量。
- 一行包含 $Attacksi$ 个不同的整数 $Aij$,按升序排列:第 $i$ 位决斗者掌握的攻击标识。
- 一行包含 $Defensesi$ 个不同的整数 $Dij$,按升序排列:第 $i$ 位决斗者掌握的防御标识。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),如果可以保证你将成为剑术大师(如题目描述中所述),则 $y$ 为 YES,否则为 NO。
数据范围
$1 \le T \le 100$ $2 \le N \le 1000$ $1 \le P \le 1000$ $1 \le Attacksi \le P$,对于所有 $i$ $1 \le Defensesi \le P$,对于所有 $i$ $1 \le Aij < Ai(j+1) \le P$,对于所有 $i$ 和 $j$ $1 \le Dij < Di(j+1) \le P$,对于所有 $i$ 和 $j$ 所有 $Attacksi$ 的总和加上所有 $Defensesi$ 的总和不超过 $50000$ 时间限制:每个测试集 10 秒 内存限制:1GB
样例
样例输入 1
5 2 2 1 2 1 1 2 2 1 1 2 1 2 2 1 1 1 2 1 1 2 1 2 5 1 1 2 3 2 1 2 4 2 3 5 3 2 1 2 3 3 4 2 4 3 4 2 3 4 5 2 5 4 5 1 2 3 4 5 4 4 1 1 1 4 2 3 2 3 2 3 4 1 3 4 1 2 4 1 3 4 1 3 4
样例输出 1
Case #1: NO Case #2: YES Case #3: NO Case #4: NO Case #5: YES
说明
注意,最后四个样例用例不会出现在测试集 1 中。
在样例 1 中,只要你的对手一直选择防御 1 和攻击 1,你就无法赢得决斗。无法保证你的对手会选择攻击 2 或选择不使用防御 1,因此无法保证你一定会成为剑术大师。
在样例 2 中,你掌握攻击 1 和防御 2,而你的(唯一)对手掌握攻击 2 和防御 1。以下策略保证能让你成为剑术大师:
- 在第一场决斗中,你必须选择攻击 1;对手可能会用防御 1 进行防御。然后,对手必须选择攻击 2;你应该选择防御 2。
- 如果对手没有防御,那么你就赢了,现在你是剑术大师。
- 否则,你没有赢,但你随后学会了攻击 2 和防御 1。然后,与该对手开始第二场决斗。这一次,选择攻击 2;对手无法防御。再一次,对手必须选择攻击 2;你应该选择防御 2。你赢了,现在你是剑术大师。
在样例 3 中,在第一场决斗中,如果你的对手总是选择攻击 4,你将永远无法防御,因为没有人掌握该攻击的防御。所以,你不可能成为剑术大师。注意,本题中可能存在世界上存在但没有任何决斗者掌握的攻击和/或防御。
在样例 4 中,有一位对手掌握了所有的防御,所以你无法保证能战胜他们(他们必须表现得“友好”而不进行防御才行!)
以下是样例 5 的一种保证获胜的策略:
- 与第一位对手决斗。你必须选择攻击 1,他们无法防御。我们假设他们选择攻击 2。(如果他们选择攻击 3,同构的策略同样有效。)你无法防御,虽然没有赢得决斗,但你学会了攻击 2。
- 与第三位对手决斗,使用攻击 2 和防御 4 以保证获胜。你学会了攻击 4(你永远不会使用它)以及防御 1 和 3。
- 与第二位对手决斗,使用攻击 2。你保证能学会防御 2:要么对手会用它来反制你,要么他们不使用它而你获胜(并学会他们所有的攻击和防御)。
- 再次与第一位对手决斗,选择攻击 1。现在,无论他们使用什么攻击,你都能防御,并且你获胜。你学会了攻击 3。
- 如果之前还没有战胜过第二位对手,再次与第二位对手决斗,使用攻击 3。