SP9516 XOREQ - XOR Equations

题目描述

最近,吉米在蓝玛丽的指导下学习线性代数,同时还在教授 Z 的课堂上学习布尔代数。由于对两个老师布置的一成不变的作业感到无聊,淘气的吉米决定出一道难题来为难他们,以报复那些繁重的作业任务。所以,吉米想了个办法,把两门课的知识结合起来,设计出一个复杂的问题:异或方程组。 让我们来看如下方程组: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/SP9516/50bd02a990fa85bc8d2c8c6fb0f83d577b28c43c.png) 该方程组满足以下条件: ![](../../../content/john_jones:xoreq2.jpg) 在这个方程组中,**.** 表示乘法运算,而 **^** 表示按位异或。按位异或操作是对长度相同的位模式,逐位进行异或运算:若两个对应的位不同,则结果为 1;若相同,则结果为 0。 吉米并不想直接要求方程组的解,而是让老师们计算出给定方程组有多少种不同的解。这确实是个棘手的难题!请帮助吉米的老师们解题吧!

输入格式

输入由多个测试用例组成。第一行是一个正整数(不超过 15),表示测试用例的数量,接下来是每个测试用例的具体数据。 对于每个测试用例,首先输入一行包含两个整数 $N$ 和 $M$,分别代表方程组的行数和列数。接下来的 $N$ 行,每行有 $M$ 个整数,第 $i$ 行第 $j$ 列的整数代表 $a_{ij}$。之后有 $M$ 行,每行描述了一个集合 $S_i$,第一个整数 $K$ 表示集合中元素的数量,接下来的 $K$ 个整数是这些元素。

输出格式

对于每个测试用例,输出一行,其中包含一个整数,表示该测试用例的解的数量。 **本翻译由 AI 自动生成**