题意:

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

行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)

列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色)

游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色。

对于某些关卡,小 Q 百思不得其解,以致他开始怀疑这些关卡是不是根本就是无解的!于是小 Q 决定写一个程序来判断这些关卡是否有解。

样例(1是黑色格子)

2
2
0 0
0 1
3
0 0 1
0 1 0
1 0 0
输出:

No
Yes

题解:

这个题开始一点儿思路都没有。。。。。

然后偷看了算法标签。。。

二分图???匈牙利算法???

——————醍醐灌顶,恍然大悟,一语惊醒梦中人——————

可以观察到:

如果我们能在棋盘上找到形似这样的1的分布:

0 0 1
0 1 0
1 0 0

就是,每行每列有且只有1个1。这就足够了。

其他的1都是跑腿的。

像这样:

0 0 1

1 1 1

0 0 1

虽然1多,但是没用啊。一样不可解。

发现,只要判断是否存在每行每列只有一个1的“有效子图””情况。

这个子图的特点是,一个行和其他所有列的交点上,有且只有一个交点是1,其他都是0

换句话说,一个行和一个列匹配了,就不能和其他的列匹配了!!!!

典型的二分图匹配性质!!

我们把所有的行看成是左部点,列看成是右部点,

那么,当这个行和这个列的交点是1的时候,行列之间连一条边。

这里匹配这条边的含义是,有效子图中,在这个位置放一个1。由于匹配的性质,这一行,这一列就不会放其他的1了,和有效子图的定义恰好一致。

看一看最大匹配,是不是n(最大也就是n)

就表明能否找到n个点,满足任意两个点不在同一行,不在同一列上,也就是能构成一个有效子图。

输出yes或者no即可。

#include<bits/stdc++.h>
using namespace std;
const int N=+;
int t,n;
int pre[N];
int mp[N][N];
struct node{
int nxt,to;
}e[N*N];
int hd[N],cnt;
void add(int x,int y){
e[++cnt].nxt=hd[x];
e[cnt].to=y;
hd[x]=cnt;
}
bool vis[N];
bool dfs(int x){
for(int i=hd[x];i;i=e[i].nxt){
int y=e[i].to;
if(!vis[y]){
vis[y]=;
if(!pre[y]||dfs(pre[y])){
pre[y]=x;
return true;
}
}
}
return false;
}
void clear(){
memset(hd,,sizeof hd);
cnt=;
memset(pre,,sizeof pre);
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%d",&n);
clear();
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
scanf("%d",&mp[i][j]);
if(mp[i][j]==) add(i,j);
}
int ans=;
for(int i=;i<=n;i++){
memset(vis,,sizeof vis);
if(dfs(i)) ans++;
}
if(ans==n){
printf("Yes\n");
}
else printf("No\n");
}
return ;
}

[ZJOI2007]矩阵游戏——非常漂亮的二分图转化的更多相关文章

  1. BZOJ [ZJOI2007]矩阵游戏(二分图匹配)

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

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

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

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

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

  4. BZOJ1059 ZJOI2007 矩阵游戏 【二分图匹配】

    BZOJ1059 ZJOI2007 矩阵游戏 Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏--矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一 ...

  5. BZOJ 1059 [ZJOI2007]矩阵游戏

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

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

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

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

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

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

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

  9. 1059: [ZJOI2007]矩阵游戏

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

随机推荐

  1. .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    前言 上篇<.net core实践系列之短信服务-架构设计>介绍了我对短信服务的架构设计,同时针对场景解析了我的设计理念.本篇继续讲解Api服务的实现过程. 源码地址:https://gi ...

  2. hexo——轻量、简易、高逼格的博客

    背景 写blog虽然经历了N多不同时代的产品,恒久不变的始终是自己无人问津的网站.虽然没几个人看,还是隔断时间就要折腾一下.从最开始的wordpress,到tale,到现在的hexo,网站变得越来越简 ...

  3. Telephone Phrases

    There are some common phrases and sentences you can use when speaking on the telephone. The informal ...

  4. Docker容器学习梳理 - 基础知识(1)

    Docker是PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源.Docker是通过内核虚拟化技 ...

  5. Redis常用操作-----字符串

    1.APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾. 如果 key 不存在, APPEND 就简单地将给定 ...

  6. Scrum Meeting 7

                第七次会议 No_00:工作情况 No_01:任务说明 待完成 已完成 No_10:燃尽图 No_11:照片记录 待更新 No_100:代码/文档签入记录 No_101:出席表 ...

  7. hover设定触发时间间隔

    500毫秒执行一次 $(".banner_menu_content li a").hover(function(){ var aa=$(this).text().trim(); s ...

  8. PHP使用echo输出标签设置CSS样式问题

    使用php是可以输出HTML标签的,这为页面设计带来很大方便. 在此记录php输出标签设置CSS样式的问题: echo可使用''.""或你不用引号,如果想要输出带CSS样式的HTM ...

  9. 第三个spring冲刺第9天

    今天是第三阶段冲刺的最后第二天了,我们该实现的功能基本已经全部实现了,有填空的,选择题的,还有计时的,目前就是在查BUG,看看有哪些地方有BUG需要修改,以下截图是我们团队所做的功能截图: 首页: 填 ...

  10. Alpha 答辩总结模板

    Alpha 答辩总结模板 每个小组提供一篇总结博客(组内共享,每个人都发布),包含: 本组(组名)所有成员(短学号,名,标注组长)(1分) 组内各成员贡献比例,如不提供,取平均分后组长得分减50% G ...