1059: [ZJOI2007]矩阵游戏

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 4762  Solved: 2269
[Submit][Status][Discuss]

Description

小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏。矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的)。每次可以对该矩阵进行两种操作:行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)列交换操作:选择矩阵的任意行列,交换这两列(即交换对应格子的颜色)游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。对于某些关卡,小Q百思不得其解,以致他开始怀疑这些关卡是不是根本就是无解的!!于是小Q决定写一个程序来判断这些关卡是否有解。

Input

第一行包含一个整数T,表示数据的组数。接下来包含T组数据,每组数据第一行为一个整数N,表示方阵的大小;接下来N行为一个N*N的01矩阵(0表示白色,1表示黑色)。

Output

  输出文件应包含T行。对于每一组数据,如果该关卡有解,输出一行Yes;否则输出一行No。

Sample Input

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

Sample Output

No
Yes

感觉是个智力题=.=

二分图匹配

在同一行的两个棋子无论怎么操作都永远在同一行

在同一列的两个棋子无论怎么操作也永远在同一列

所以这题就是找是否有n个棋子任意两个都不同行且不同列

建个二分图,所有的行作为左边n个点,所有列作为右边n个点,如果格子(i, j)上有棋子,

那么左边的第i个点和右边的第j个点连条边

最后判断是否能够完美匹配即可

#include<stdio.h>
#include<string.h>
int n, link[205], vis[205], road[205][205];
int Sech(int x)
{int i;for(i=1;i<=n;i++){if(vis[i]==0 && road[x][i]){vis[i] = 1;if(link[i]==0 || Sech(link[i])){link[i] = x;return 1;}}}return 0;
}
int main(void)
{int T, i, j, ans;scanf("%d", &T);while(T--){scanf("%d", &n);for(i=1;i<=n;i++){for(j=1;j<=n;j++)scanf("%d", &road[i][j]);}ans = 0;memset(link, 0, sizeof(link));for(i=1;i<=n;i++){memset(vis, 0, sizeof(vis));if(Sech(i))ans++;}if(ans==n)printf("Yes\n");elseprintf("No\n");}return 0;
}

bzoj 1059: [ZJOI2007]矩阵游戏(二分匹配)相关推荐

  1. [BZOJ]1059: [ZJOI2007]矩阵游戏

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行 ...

  2. BZOJ 1059 [ZJOI2007]矩阵游戏

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 题意:给定一个n×nn \times n的01矩阵,可以任意交换两行或两列的数字,问是否 ...

  3. BZOJ 1059: [ZJOI2007]矩阵游戏

    传送门 解题思路 二分图匹配,出现1后让这一行和这一列连边,然后跑一遍匈牙利,判断最后的ans是否等于n.刚开始想复杂了,这样连了后还拆点反着连.. 代码 #include<iostream&g ...

  4. 【BZOJ - 1059】矩阵游戏(二分图匹配,建图,最小边覆盖)

    题干: 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换 ...

  5. 1059: [ZJOI2007]矩阵游戏 (匈牙利)

    Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两 ...

  6. 黑暗爆炸 #1059. [ZJOI2007]矩阵游戏

    传送门 思路:这道题能用二分图我是完全没有想到的,后来去补了下最大二分图的最大匹配,然后看题解才勉强推了这样的思路 一行的每个元素看成二分图的一边,一列的元素看成二分图的另一边. 如果某个点是1那么就 ...

  7. bzoj1059: [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4748  Solved: 2264 [Submit][St ...

  8. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  9. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

最新文章

  1. 对分组交换(packet switching)高效迅速灵活可靠四个优点的理解
  2. 征信报告上的逾期记录应该怎么清除?
  3. 这是不是帮女朋友拍照时的你?哈哈哈哈
  4. 初级程序员为避免淘汰该怎么办?
  5. 计算机网络-网络应用
  6. 安装使用sublime 对比工具sublimerge
  7. 安卓逆向系列教程(二)APK 和 DEX
  8. matplotlib.pyplot.bar()条形图
  9. AndroidStudio安卓原生开发_activity关闭的时候把数据传递给上一个activity---Android原生开发工作笔记93
  10. 如何成为架构师?7个关键的思考、习惯和经验
  11. python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」
  12. mongodb导入bson文件_分布式文档存储数据库之MongoDB备份与恢复
  13. 站在巨人的肩膀上学习Android开发
  14. 【学习进阶】Java 进阶学习资料《Java 编程思想》第5版 等
  15. java面试题1 牛客:A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:
  16. 华为eNSP-动态路由实验
  17. oracle瘦身,数据库瘦身
  18. 华为:围绕价值创造展开人力资源管理
  19. windows 服务器cpu使占用高的原因分析与解决办法
  20. SourceTeee 设置拉取时使用rebase

热门文章

  1. python零基础学习书-零基础学Python,不容错过的入门书籍
  2. 用python画玫瑰花-使用Python画一朵玫瑰花
  3. python如何输出整数逆序_python字符串类型及操作
  4. 【深度优先搜索】牛客网:剪绳子
  5. 【java笔记】常用接口(2):Consumer接口
  6. 最简单的基于FFmpeg的移动端例子:IOS 视频解码器
  7. 认证服务器的搭建_这个认证正式发布!
  8. 程序员怎样学习python_一个开发十年的程序员论:学习Python最正确的步骤(0基础必备)...
  9. 安装Docker Desktop报错WSL 2 installation is incomplete
  10. Missing artifact com.sun tools.jar 1.5.0 system 解决方法