对于某个开关,都有n个选项可能影响它的结果,如果会影响,则系数为1,否则系数为0;最后得到自由元的个数,自由元可选0也可选1.

#include <cstdio>
#include <algorithm> int T, n, a[30], x, y; int gauss() {
for (int i = 1; i <= n; i++) {
//列主
for (int j = i + 1; j <= n; j++) {
if (a[j] > a[i]) {
std::swap(a[i], a[j]);
}
}
if (a[i] == 0) return 1 << (n - i + 1);
if (a[i] == 1) return -1;
//消元
for (int k = n; k; k--) {
if (a[i] & (1 << k)) {
for (int j = 1; j <= n; j++) {
if (i != j && a[j] & (1 << k)) {
a[j] ^= a[i];
}
}
break;
}
}
}
return 1;
} int main(int argc, char const *argv[]) {
scanf("%d", &T);
while (T--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1, j; i <= n; i++) {
scanf("%d", &j);
a[i] ^= j;//等号右侧
a[i] |= 1 << i;//a[i][i] = 1
}
while (~scanf("%d %d", &x, &y) && (x | y)) {
a[y] |= 1 << x;//a[y][x] = 1
}
int ans = gauss();
if (ans > 0) printf("%d\n", ans);
else puts("Oh,it's impossible~!!");
}
return 0;
}

最新文章

  1. jq选择器基础
  2. TSQL 分组集(Grouping Sets)
  3. Reactjs+Webpack+es2015 入门HelloWord(一)
  4. 对属性NaN的理解纠正和对Number.isNaN() 、isNaN()方法的辨析
  5. 合并excel中多个sheet
  6. 一次外企QQ面试
  7. linux centos 6.5 运行MySQL Workbench 6.0找不到 libmysqlclient.so.16和libmysqlclient_r.so.16
  8. 2016年10月29日 星期六 --出埃及记 Exodus 19:14
  9. 视频特效制作:如何给视频添加边框、水印、动画以及3D效果
  10. Python2安装说明
  11. python遍历目录文件脚本的示例
  12. UIView局部点击(转)
  13. B树,B-树,B+树,B*树
  14. 基础才是重中之重~关于ThreadStatic和Quartz的一点渊源
  15. java常见排序方法
  16. Javaweb项目碰到的问题- Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)
  17. 爬取西刺网的免费IP
  18. 你真的了解interface和内部类么
  19. 菜鸟脱壳之脱壳的基础知识(三)——寻找OEP
  20. Java NIO -- 管道 (Pipe)

热门文章

  1. 纯CSS3实现淡入淡出下拉菜单
  2. RQNOJ 624 运动鞋:dp
  3. 手工创建ASM Disk Groups、为 ASM Disk Groups 添加 disk
  4. syslog-ng 配置(tcp协议)
  5. SimpliciTI简介
  6. .NETFramework:WebClient
  7. UDK游戏打包详解
  8. KMP匹配 (1)
  9. fabnacii数列
  10. 转载:SharePoint 2010 自定义 字段 类型--------省市区联动