1059: [ZJOI2007]矩阵游戏

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2737  Solved: 1333
[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
【数据规模】
对于100%的数据,N ≤ 200

HINT

Source

对于每种操作,本来在同一行或者同一列上的点操作后必定还在同一行或同一列。

所以就是要找不在同行同列上的点的个数。

所以行列建图,跑匈牙利求最大匹配。如果最大匹配=n那么证明有解。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int T,n,ans,cnt;
int lk[205],state[205],head[205];
int list[80005],next[80005];
inline int read()
{int a=0,f=1; char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1; c=getchar();}while (c>='0'&&c<='9') {a=a*10+c-'0'; c=getchar();}return a*f;
}
inline void insert(int x,int y)
{next[++cnt]=head[x];head[x]=cnt;list[cnt]=y;
}
bool Hungary(int x)
{for (int i=head[x];i;i=next[i]){if (state[list[i]]==T) continue;state[list[i]]=T;if (!lk[list[i]]||Hungary(lk[list[i]])){lk[list[i]]=x;return 1;}}return 0;
}
int main()
{int Test=read();while (Test--){memset(lk,0,sizeof(lk));memset(state,0,sizeof(state));memset(head,0,sizeof(head));cnt=0; T=0;n=read();int x; bool flag=0;for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){x=read();if (x) insert(i,j);}for (int i=1;i<=n;i++){T++;if (!Hungary(i)) {flag=1; break;}}if (!flag) puts("Yes"); else puts("No");}return 0;
}

转载于:https://www.cnblogs.com/ws-fqk/p/4761668.html

[ZJOI2007][BZOJ1059] 矩阵游戏|二分图匹配|匈牙利算法相关推荐

  1. nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  2. 二分图匹配--匈牙利算法

    文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...

  3. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

  4. 二分图匹配——匈牙利算法

    匈牙利算法 什么是匈牙利算法 匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法.美国数学家哈罗德·库恩于1955年提出该算法.此算法之所以被称作匈牙利算法,是因 ...

  5. Codevs 1222 信与信封问题 二分图匹配,匈牙利算法

    题目: http://codevs.cn/problem/1222/ 1222 信与信封问题   时间限制: 1 s   空间限制: 128000 KB   题目等级 : 钻石 Diamond 题解 ...

  6. 二分图匹配-匈牙利算法

    说到二分,我们就很容易想到二分查找算法,今年下半年--,今天所介绍的二分图和二分查找没有太大的联系,我们先来看一下它的定义: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图 ...

  7. HDU 2063 过山车 二分图匹配 匈牙利算法

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  8. 二分图匹配----匈牙利算法之二

    poj 1469 COURSES //题意:现在有p门课程和n个学生,现在需要有由p个学生组成的组织,该组织满足每个学生代表一门课程以及每门课程只能由一个学生代表, //现给出每门课程都有哪些学生可以 ...

  9. 【CF1139E】Maximize Mex - 二分图匹配 - 匈牙利算法

    [题目链接] https://www.luogu.com.cn/problem/CF1139E [题目描述] 有n个学生,第i个学生在俱乐部c_i,并拥有一个能力值a_i.在接下来的d天中,每天会有一 ...

  10. 二分图的匹配——匈牙利算法

    什么是匹配 匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点. 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配. 二分图的匹配:给定一个二分图G,在G ...

最新文章

  1. leetcode874
  2. C语言fseek()函数(whence)重新定位文件指针位置
  3. python 按列名称筛选_python中实现excel的高级筛选
  4. 关于js中function(e) e的理解
  5. 22、java中的注解
  6. 第7步 mybatis-generator dao层生成器
  7. [MEGA DEAL]完整的Java编程训练营(94%折扣)
  8. response.sendRedirect使用注意事项 .
  9. reddit_我在3天内疯狂地审查了Reddit上的50个投资组合,从中学到了什么。
  10. 智慧交通day03-车道线检测实现03:相机校正和图像校正的实现
  11. java 枚举可以循环吗_(转载)java 枚举 循环遍历以及一些简单常见的使用
  12. 原F1000Prime推荐:ACE2泛癌分析图谱(TCGA数据库挖掘)
  13. Python程序设计语言基础06(完):组合数据类型
  14. python凯撒密码流程图_python实现凯撒密码、凯撒加解密算法
  15. 概率论与数理统计 第四版 浙江大学 盛骤,谢式千,潘承毅 个人阅读笔记
  16. 15个开发者最亲睐的Andr​​oid代码编辑器
  17. 爬取花瓣网并批量下载图片
  18. 论文笔记(1) B4: Experience with a Globally-Deployed Software Defined WAN
  19. gitHub报错10054、443解决办法
  20. VBA让Excel数据去重,数量相加

热门文章

  1. Nginx源码阅读 --- nginx evnet事件接受请求时,函数执行过程
  2. MAC VSCODE配置C语言开发环境
  3. Spring Security 之多AuthenticationProvider认证模式实现
  4. server使用abp中调用存储过程 sql_ABP中连接已有数据库执行Sql或存储过程
  5. layuit 框架_UI框架Layui入门介绍
  6. nacos注册中心demo
  7. 【渝粤教育】国家开放大学2019年春季 8680电工电子技术 参考试题
  8. 【渝粤题库】广东开放大学 文化产业概论 形成性考核 (2)
  9. 【网络】半双工和全双工
  10. django的命令, 配置,以及django使用mysql的流程