_bzoj1059 [ZJOI2007]矩阵游戏【二分图匹配】

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1059

保存匈牙利模板。

#include <cstdio>
#include <cstring>

const int maxn = 205;
const char _outp[2][5] = {"No", "Yes"};

int T, n, left[maxn], ans;
char g[maxn][maxn], cover[maxn];

bool dfs(int i) {
	for (int j = 1; j <= n; ++j) {
		if (!g[i][j] || cover[j]) {
			continue;
		}
		cover[j] = 1;
		if (!left[j] || dfs(left[j])) {
			left[j] = i;
			return true;
		}
	}
	return false;
}

int main(void) {
	//freopen("in.txt", "r", stdin);
	scanf("%d", &T);
	while (T--) {
		scanf("%d", &n);
		ans = 0;
		memset(left, 0, sizeof left);
		for (int i = 1; i <= n; ++i) {
			for (int j = 1; j <= n; ++j) {
				scanf("%d", (int*)(g[i] + j));
			}
		}

		for (int i = 1; i <= n; ++i) {
			memset(cover, 0, sizeof cover);
			if (dfs(i)) {
				++ans;
			}
		}
		puts(_outp[ans == n]);
	}
	return 0;
}

  

时间: 2024-08-08 09:29:35

_bzoj1059 [ZJOI2007]矩阵游戏【二分图匹配】的相关文章

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

1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1891  Solved: 919[Submit][Status] Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)列交换操作:选择矩阵

[bzoj1059] [ZJOI2007] 矩阵游戏 (二分图匹配)

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

bzoj 1059: [ZJOI2007]矩阵游戏 [二分图][二分图最大匹配]

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

cogs660 矩阵游戏 二分图匹配

填坑--链接:http://cogs.pro/cogs/problem/problem.php?pid=660 题意:给出一个矩阵,有黑白双色,问是否可以使主对角线全为黑色. 不能不说现在越来越垃圾了--眼看错误都看不出来-- 这道题显然可以网络流瞎切,但是我们考虑到填坑向需求,所以我们用二分图做它.把每一行看做$x$节点,列看做$y$节点,每个黑节点看做一条边,目标便是每个$x$节点完成匹配. 然后--我菜翻了--神$TM$ if(match[v]==-1||find(v)) 大声告诉我我是不

1059: [ZJOI2007]矩阵游戏

1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2154  Solved: 1053[Submit][Status] Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色)列交换操作:选择矩

ZJOI2007矩阵游戏

我们应该通过思考得到这样一个性质:如果一个点被选了,那么与它同行同列的点都不能选 然后就是裸的二分图匹配了…… (我应该能想出这道题来的,可是看了看题觉得没思路就去看题解了,唉……以后这种水题自己一定要动脑想想!) 代码:这种水题应该1A吧 1 var i,j,n,t:longint; 2 flag:boolean; 3 p:array[0..250] of longint; 4 v:array[0..250] of boolean; 5 a:array[0..250,0..250] of lo

BZOJ P1059 [ZJOI2007]矩阵游戏——solution

1059: [ZJOI2007]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4604  Solved: 2211[Submit][Status][Discuss] Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换操作:选择 矩阵的任意两行,交换这两行(即交换对应格子的颜

P1129 [ZJOI2007]矩阵游戏

洛谷—— P1129 [ZJOI2007]矩阵游戏 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色. 对于某些关卡,小Q百思不

洛谷P1129 [ZJOI2007]矩阵游戏

P1129 [ZJOI2007]矩阵游戏 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: 行交换操作:选择矩阵的任意两行,交换这两行(即交换对应格子的颜色) 列交换操作:选择矩阵的任意两列,交换这两列(即交换对应格子的颜色) 游戏的目标,即通过若干次操作,使得方阵的主对角线(左上角到右下角的连线)上的格子均为黑色. 对于某些关卡,小Q百思不得其解,以