P8371 [POI 2001] 绿色游戏

题目描述

绿色游戏是一种两人游戏,双方分别称 $\text{Ann}$ 和$\text{Billy}$。游戏的内容主要是轮流在棋盘上移动一颗棋子。 棋盘上的点一部分是绿色的,其余是白色的。它们全部从 $1$ 至 $a+b$ 编号。编号 $1$ 至 $a$ 的点属于 $\text{Ann}$ ,编号 $a+1$ 至 $a+b$ 的点属于 $\text{Billy}$。每个点都有一些后继点,均可一步到达。属于 $\text{Ann}$ 的点的后继点一定属于 $\text{Billy}$,反之亦然。所有的点都至少有一个后继点,这样总可以往下走一步。 游戏开始时把棋子放在任意的一点 $P$ 上,然后双方轮流移动棋子至当前所在点(属于移动方)的一个后继点上(属于对手)。游戏由点 $P$ 的拥有者开始,结束时棋子第二次到达了某一点,称点 $Q$。如果在从点 $Q$ 至点 $Q$ 的一连串移动中,棋子至少一次被放到绿色点上,则 $\text{Ann}$ 赢。若从点 $P$ 开始,不管 $\text{Billy}$ 如何移动, $\text{Ann}$ 总能保证赢得这次游戏,则称 $\text{Ann}$ 对起始点 $P$ 有必胜的策略。 请你编写一个程序: 1. 读入对棋盘的描述。 2. 算出 $\text{Ann}$ 有必胜策略的起始点。

输入格式

首行有两个整数 $a$ 和 $b$ ,两个整数之间用一个空格分开,分别表示属于 $\text{Ann}$ 和 $\text{Billy}$ 的点数 $(1 \le a,b \le 3000)$。以下 $a+b$ 行是对各点的描述,先描述 $\text{Ann}$ 的点,再描述 $\text{Billy}$ 的点。 第 $i+1$ 行($1 \le i \le a+b$) 以整数 $z,k$ 开始:$z$ 表示点 $i$ 的颜色($0$-白色,$1$-绿色),$k$ 表示后继点的数目。然后是 $K$ 个整数($2 \le k \leq a+b$),写在同一行,代表点 $i$ 后继点的编号,这些整数均用一个空格分开。绿点的个数不超过 $100$ ,所有点的后继点的个数之和不超过 $30000$ 。

输出格式

首行仅一个整数 $L$ ,代表 $\text{Ann}$ 有 $L$ 个有必胜策略的起始点。以下 $L$ 行按升序顺序依次给出这些点的编号。