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

对于存在的点a[i][j],在二分图中从 xi 向 yj 连边,判断二分图的最大匹配是否为n就好了(怎么可能大于n)

做到这里还是不会bfs匈牙利

1A是好的啦?没加读优好慢好慢啊?

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; struct Edge{
int to,nxt;
Edge(int to=,int nxt=):
to(to),nxt(nxt){}
}; const int maxn=,maxm=; Edge E[maxm<<];
int head[maxn],mat[maxn];
bool check[maxn];
int T,n,n_l,n_r,m,cnt=; bool dfs(int u){
for(int e=head[u];e;e=E[e].nxt){
int v=E[e].to;
if(!check[v]){
check[v]=;
if(mat[v]==-||dfs(mat[v])){
mat[v]=u;
mat[u]=v;
return ;
}
}
}
return ;
} int hungarian(){
int ans=;
memset(mat,-,sizeof mat);
for(int u=;u<=n_l;u++)
if(mat[u]==-){
memset(check,,sizeof check);
if(dfs(u)) ans++;
}
return ans;
} inline void ad_e(int from=,int to=){
E[++cnt]=Edge(to,head[from]);
head[from]=cnt;
E[++cnt]=Edge(from,head[to]);
head[to]=cnt;
} void init(){
memset(head,,sizeof head);
cnt=;
scanf("%d",&n); n_l=n;
for(int i=,tmp;i<=n;i++)
for(int j=;j<=n;j++){
scanf("%d",&tmp);
if(tmp) ad_e(i,n+j);
}
} int main(){
//freopen("temp.in","r",stdin); scanf("%d",&T);
while(T--){
init();
if(hungarian()==n) puts("Yes");
else puts("No");
}
return ;
}

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

bzoj 1059: [ZJOI2007]矩阵游戏 [二分图][二分图最大匹配]的更多相关文章

  1. BZOJ 1059 [ZJOI2007]矩阵游戏:二分图匹配

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 题意: 给你一个n*n的01矩阵. 你可以任意次地交换某两行或某两列. 问你是否可以 ...

  2. BZOJ 1059 [ZJOI2007]矩阵游戏 (二分图最大匹配)

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5281  Solved: 2530[Submit][Stat ...

  3. bzoj 1059: [ZJOI2007]矩阵游戏 二分图匹配

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1891  Solved: 919[Submit][Statu ...

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

    只要存在N个x, y坐标均不相同的黑格, 那么就一定有解. 二分图匹配, 假如最大匹配=N就是有解的, 否则无解 ------------------------------------------- ...

  5. BZOJ 1059 [ZJOI2007]矩阵游戏

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2707  Solved: 1322[Submit][Stat ...

  6. bzoj 1059 [ZJOI2007]矩阵游戏(完美匹配)

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2993  Solved: 1451[Submit][Stat ...

  7. BZOJ 1059: [ZJOI2007]矩阵游戏 匈牙利算法

    1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2351  Solved: 1156 题目连接 http:// ...

  8. 【BZOJ】1059: [ZJOI2007]矩阵游戏(二分图匹配)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1059 本题可以看出,无论怎样变化,在同一行和同一列的数永远都不会分手---还是吐槽,,我第一眼yy了 ...

  9. 1059. [ZJOI2007]矩阵游戏【二分图】

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

随机推荐

  1. C语言结构体指针

    #include <stdio.h> int main() { /*************************************************** *结构体指针:指向 ...

  2. struts2类型转换1

    概述 从一个 HTML 表单到一个 Action 对象, 类型转换是从字符串到非字符串. HTTP 没有 “类型” 的概念. 每一项表单输入只可能是一个字符串或一个字符串数组. 在服务器端, 必须把 ...

  3. SQL Server 获取所有库名

    ----1. 获取所有的数据库名----- SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME   -----2. 获取所有的表名------ ...

  4. 高效率使用google,国外搜索引擎,国内顺利使用Google的另类技巧,可用谷歌镜像, 可用google学术, 如何使用robots不让百度和google收录

    Google良好的搜索和易用性已经得到了广大网友的欢迎,但是除了我们经常使用的Google网站.图像和新闻搜索之外,它还有很多其他搜索功能和搜索技巧.如果我们也能充分利用,必将带来更大的便利.这里我介 ...

  5. Git 本地仓库管理

    目录 目录 基本概念 配置 配置个人帐号信息 安装 本地版本库 创建 Git 仓库 Git 仓库版本回退 修改管理 基本概念 工作区(Working Directory): 就是你在电脑里能看到的目录 ...

  6. Altium Designer 精心总结(转)

    https://blog.csdn.net/qq_29350001/article/details/52199356 设置铺铜间距规则,Electrical-Clearence_Poly设置如下,是铺 ...

  7. shell 单引号&双引号的使用

    使用双引号: shell> X='parameter' shell> echo "Hello $X" Hello parameter 单引号中嵌套单引号: shell& ...

  8. ubuntu 删除 mysql (转)

    1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 sudo apt-get ...

  9. 编译Solr4.72 源码没有成功

    最近需要用到solr,查询Hbase里面的数据,编译Solr的时候遇到了点问题: 下了solr的源码后需要用ant自己编译: 源码下载地址:https://svn.apache.org/repos/a ...

  10. 第四天:语句、表达式与if分支、循环语句

    表达式 代码风格 代码格式指南 PEP8 缩进4空格 一行不超过79 空行 赋值语句 基本 (x,y) = (5,10) x [x,y,z] = [1,2,3] x a,b,c = 'uhk' a 5 ...