#P7352. 炉心融解

炉心融解

题目背景

2020-2021 国家集训队自选题

题目描述

你叫了 nn 个人来玩游戏。nn 个人从 00n1n-1 编号,按顺序坐成一圈,00 号与 n1n-1 号相邻。

你给这 nn 个人每人发了一张写着数字 0\texttt{0}1\texttt{1} 的卡片。每个人都可以看到除了相邻的两个人以外所有人的卡片数字,也可以看到自己的。

游戏共进行 mm 回合。第 ii 回合你会向所有人公布 kik_i 条信息,信息的格式都是“某个集合里存在某种数字的卡片”。公布完之后:

  • 如果某个人手里的卡片写着 0\texttt 0,且他可以通过推断确定相邻的两个人卡片数字逻辑或的值,他就必须大喊“Meltdown!”。
  • 如果某个人手里的卡片写着 1\texttt 1,且他可以通过推断确定相邻的两个人卡片数字逻辑异或的值,他就必须大喊“Meltdown!”。

所有人都清楚游戏规则,且都有极强的推断能力,只要依据他已有的信息能够推断出来他就必须要喊。喊话是所有人同时喊,不可以听别人喊完了再继续推断。然后本回合结束,进入下一回合。

除此之外这 nn 个人没有任何信息交流。现在给出每个人的卡片数字和你公布的所有信息,求每个人第一次喊出“Meltdown!”是在第几回合。

输入格式

输入的第一行包括两个正整数 n,mn,m,表示人数和回合数。第二行 nn 个整数,分别表示编号 00n1n-1 的人的卡片上的数字。接下来包括 mm 个部分,第 ii 部分描述了第 ii 回合你公布的信息。

ii 部分的第一行包括一个非负整数 kik_i,表示第 ii 回合公布的信息条数。接下来 kik_i 行,每行第一个正整数 pp,表示集合的人数,接下来 pp 个互不相同的整数表示集合里所有人的编号。最后一个整数 cc,表示这个集合里存在数字为 cc 的卡片。数据保证这些信息是正确的。

输出格式

输出包括一行 nn 个整数,分别表示编号 00n1n-1 的人第一次喊出“Meltdown!”时的回合数。如果他自始自终都没有喊“Meltdown!”,这个数输出 1-1

3 2
1 1 0
2
2 0 2 1
1 1 1
0
2 2 1
3 2
1 1 1
1
3 0 1 2 1
0
2 2 2

提示

对于 100%100\% 的数据,3n163\le n\le 16 1m100\ 1\le m\le 1000k2×1030\le \sum k\le 2\times 10^3