洛谷:矩阵游戏


洛谷题解就挺好

目的是使得最终(1,1)(2,2)…(n,n)都有一个点

可以看作为,最终状态需要每 i 行和 i 列都存在一个匹配

建图方式:对于 i 行 j 列的1点,建一条 i 连向 j 的边即可,最后跑一个二分图匹配,只有匹配数为 n 才能说明有解

可以证明交换行、交换列的操作不会影响匹配数

代码:

#include<bits/stdc++.h>
#include<unordered_set>
#include<unordered_map>
#define mem(a,b) memset(a,b,sizeof a)
#define cinios (ios::sync_with_stdio(false),cin.tie(0),cout.tie(0))
#define sca scanf
#define pri printf
#define ul (u << 1)
#define ur (u << 1 | 1)
#define fx first
#define fy second
//#pragma GCC optimize(2)
//[博客地址](https://blog.csdn.net/weixin_51797626?t=1)
using namespace std;typedef long long ll;
typedef pair<int, int> PII;const int N = 210, M = 40010, MM = 3000010;
int INF = 0x3f3f3f3f, mod = 100003;
ll LNF = 0x3f3f3f3f3f3f3f3f;
int n, m, k, T, S, D;
int h[N], e[M], ne[M], idx;
int match[N << 1];
bool st[N << 1];void add(int a, int b) {e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}bool find(int x) { //标准匈牙利for (int i = h[x]; ~i; i = ne[i]) {int j = e[i];if (st[j])continue;st[j] = true;if (!match[j] || find(match[j])) {match[j] = x;return true;}}return false;
}int main() {cinios;cin >> T;while (T--){cin >> n;mem(h, -1);idx = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++) {cin >> k;if (k)add(i, n + j);//行对列建边//虽然二分图是无向图问题,但只用建单向边即可,枚举其中一个集合}mem(match, 0);int mat = 0;for (int i = 1; i <= n; i++) {mem(st, 0);if (find(i))mat++;}if (mat == n)cout << "Yes";//匹配数必须为 nelse cout << "No";cout << '\n';}return 0;
}

洛谷:P1129 [ZJOI2007] 矩阵游戏(二分图最大匹配)相关推荐

  1. 洛谷P1129: [ZJOI2007]矩阵游戏(二分图最大匹配)

    https://www.luogu.org/problemnew/show/P1129 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N×N ...

  2. 洛谷P1129 [ZJOI2007] 矩阵游戏 题解

    洛谷P1129 [ZJOI2007] 矩阵游戏 题解 题目链接:P1129 [ZJOI2007] 矩阵游戏 题意:给定一张有黑白棋子的正方形棋盘,问存不存在解法使得经过若干次交换行或列的操作后,左上角 ...

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

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

  4. 洛谷:P1129 [ZJOI2007] 矩阵游戏

    题目链接:P1129 [ZJOI2007] 矩阵游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 首先不知道最大匹配数概念的可以看看这篇博客: (5条消息) 二分图及 ...

  5. P1129 [ZJOI2007] 矩阵游戏

    文章目录 R e s u l t Result Result H y p e r l i n k Hyperlink Hyperlink D e s c r i p t i o n Descripti ...

  6. 【bzoj3240 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)

    题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法--然而我太弱了,一开始只想到了矩阵乘法的 ...

  7. P1129 [ZJOI2007]矩阵游戏 (匈牙利算法)

    传送门 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个n×n \timesn×n黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次 ...

  8. 洛谷P7515:矩阵游戏(差分约束)

    解析 如果没有元素均要在 [0,1e6][0,1e6][0,1e6] 的条件,可以很容易的构造出一个合法解. 那么我们就要通过调整得到的解,使所有数都在合法范围内. 注意到,每次给某一行/列依次+1, ...

  9. 洛谷 P1129 矩阵游戏

    洛谷 P1129 矩阵游戏 题目链接 题目描述 小 Q 是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个 n×n 黑白方阵进行(如同国际象棋一般,只是颜色是 ...

最新文章

  1. hdu2722 简单最短路,处理好输入就行
  2. 【算法】K-Means聚类算法(k-平均或k-均值)
  3. protobuf入门教程(六):导入定义(import)
  4. mysql show 存储过程_mysql 存储过程 show errors
  5. 【英语学习】【WOTD】resurrection 释义/词源/示例
  6. 在系统可编程器件一般使用计算机,eda技术与vhdl复习练习题.docx
  7. POJ 3278(Catch That Cow)
  8. 极限编程(xp),iso国际标准化组织
  9. worldwind java 教程,如何脱机使用World Wind Java SDK
  10. 大数据平台应用 17 个关键技术处理
  11. idea卸载不干净怎么办_卸载删除面具(Magisk)后,手机不开机怎么办
  12. python wav转pcm
  13. ceph (luminous 版) primary affinity 管理
  14. 讯为4412蜂鸣器驱动实现
  15. 使用java发送qq邮件注意问题
  16. php模板修改教程,商业模板修改高级教程
  17. 顺序表的建立、查找、插入、删除
  18. ubuntu20.04 noetic 安装 Astra Pro 驱动
  19. python win10 桌面_利用Python批量提取Win10锁屏壁纸实战教程
  20. vi 查看最顶部_vi命令示例大全

热门文章

  1. 【Unity】制作简单的启动、菜单和游戏界面
  2. 谷俊丽:基于大数据的深度学习
  3. PMS(PackageManagerService)原理简单介绍,启动过程源码简单解析
  4. 怎么查看计算机办公软件版本的,怎么看电脑office是哪个版本
  5. STP BPDU报文
  6. 论文笔记之Understanding and Diagnosing Visual Tracking Systems
  7. minigui源码学习
  8. c语言设置字体时调用对话框,第1课用C语言函数编写对话框之一直接实践
  9. ROS学习|Behavoir Tree(BT树)--c++实现
  10. vue 子组件与父组件运行的顺序