[ZJOI2007]矩阵游戏(二分图匹配、匈牙利算法)
小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏。矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的)。
每次可以对该矩阵进行两种操作:
行交换操作:选择 矩阵的任意两行,交换这两行(即交换对应格子的颜色)
列交换操作:选择矩阵的任意行列,交换这两列(即交换 对应格子的颜色)
游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑 色。
对于某些关卡,小Q百思不得其解,以致他开始怀疑这些关卡是不是根本就是无解的!!于是小Q决定写一个程序来判断这些关卡是否有解。
输入描述:
第一行包含一个整数T,表示数据的组数。
接下来包含T组数据,每组数据第一行为一个整数N,表示方阵的大小;
接下来N行为一个N*N的01矩阵(0表示白色,1表示黑色)。
输出描述:
输出文件应包含T行。
对于每一组数据,如果该关卡有解,输出一行Yes;否则输出一行No。
示例1
输入
2
2
0 0
0 1
3
0 0 1
0 1 0
1 0 0
输出
No
Yes
#include<bits/stdc++.h>
using namespace std;
int T,n,f[501][501],link[501],ans; bool b[501];
inline int read()
{int f=0; char c=getchar(); while(!isdigit(c)) c=getchar(); while(isdigit(c)) f=(f<<3)+(f<<1)+c-48,c=getchar(); return f;
}
inline bool hungary(int x)
{for (int i=1;i<=n;i++) if (f[x][i]&&!b[i]){int u=link[i]; link[i]=x; b[i]=1; if (!u||hungary(u)) return 1; link[i]=u; }return 0;
}
int main()
{T=read(); while (T--){memset(f,0,sizeof(f)), memset(link,0,sizeof(link)); n=read(); ans=0; for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)f[i][j]=read(); for (int i=1;i<=n;i++)memset(b,0,sizeof(b)), ans+=hungary(i); if (ans==n) printf("Yes\n"); else printf("No\n"); }return 0;
}
[ZJOI2007]矩阵游戏(二分图匹配、匈牙利算法)相关推荐
- nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- 二分图匹配--匈牙利算法
文章目录 二分图: 匹配 匈牙利算法 代码: 二分图: 二分图是一个无向图,点集分成子集X和Y,图中每一条边都是一边在X一边在Y 当且仅当无向图G的每一个回路次数都是偶数时(包括0),G就是一个二分图 ...
- 二分图匹配匈牙利算法DFS实现
1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...
- 二分图匹配——匈牙利算法
匈牙利算法 什么是匈牙利算法 匈牙利算法是一种在多项式时间内求解任务分配问题的组合优化算法,并推动了后来的原始对偶方法.美国数学家哈罗德·库恩于1955年提出该算法.此算法之所以被称作匈牙利算法,是因 ...
- Codevs 1222 信与信封问题 二分图匹配,匈牙利算法
题目: http://codevs.cn/problem/1222/ 1222 信与信封问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 ...
- 二分图匹配-匈牙利算法
说到二分,我们就很容易想到二分查找算法,今年下半年--,今天所介绍的二分图和二分查找没有太大的联系,我们先来看一下它的定义: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图 ...
- 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)
https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...
- HDU 2063 过山车 二分图匹配 匈牙利算法
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 二分图匹配----匈牙利算法之二
poj 1469 COURSES //题意:现在有p门课程和n个学生,现在需要有由p个学生组成的组织,该组织满足每个学生代表一门课程以及每门课程只能由一个学生代表, //现给出每门课程都有哪些学生可以 ...
- 【CF1139E】Maximize Mex - 二分图匹配 - 匈牙利算法
[题目链接] https://www.luogu.com.cn/problem/CF1139E [题目描述] 有n个学生,第i个学生在俱乐部c_i,并拥有一个能力值a_i.在接下来的d天中,每天会有一 ...
最新文章
- 图书抄袭何时休,技术人的版权在哪里?
- 关于OPENGL的各个变换的顺序
- 【Tools】Visual Studio 2017下载和安装
- mysql 原生 添加数据_手撸Mysql原生语句--增删改查
- 【费用流】【线性规划】志愿者招募(luogu 3980)
- 战队服务器人员位置,和平精英:职业战队如何分配成员位置?5大定位划出5种职位...
- 编写函数实现员工信息录入和输出_Excel---最牛的员工档案模板,非常智能化
- Inferring Generative Model Structure with Static Analysis-2017【论文理解】
- 构建企业级LAMMP环境
- 基本类型的默认值和取值范围
- 【Network篇<Day02>】——华为模拟器eNSP、交换机命令、路由器命令
- kafka生产者发送消息提升效率策略设置
- 重装系统win10步骤和教程,win10怎么自己重装系统
- 基于java+ssm+mysql的医院管理系统
- 前端框架系列之(mvp)
- 《从0到1:CTFer成长之路》SQL注入-2
- ubuntu 18.04 卸载firebox
- linux用户密码转换为明文,Linux strace 明文密码抓取
- 联合索引(各种索引)
- 金融工程---马尔科夫预测