背景

随着时代的演进,困难的刑案也不断增加...
但真相只有一个
虽然变小了,头脑还是一样好,这就是名侦探柯南!

描述

[CoVH06]
面对OIBH组织的嚣张气焰, 柯南决定深入牛棚, 一探虚实.
他经过深思熟虑, 决定从OIBH组织大门进入...........

OIBH组织的大门有一个很神奇的锁.
锁是由M*N个格子组成, 其中某些格子凸起(灰色的格子). 每一次操作可以把某一行或某一列的格子给按下去.

如果柯南能在组织限定的次数内将所有格子都按下去, 那么他就能够进入总部. 但是OIBH组织不是吃素的, 他们的限定次数恰是最少次数.

请您帮助柯南计算出开给定的锁所需的最少次数.

格式

输入格式

第一行 两个不超过100的正整数N, M表示矩阵的长和宽
以下N行 每行M个数 非0即1 1为凸起方格

输出格式

一个整数 所需最少次数

样例1

样例输入1

4 4
0000
0101
0000
0100
Copy

样例输出1

2
Copy

限制

全部1秒

提示

OIBH组织的第一道防线居然被柯南突破了. 这引起了OIBH组织的高度重视, 他们派出了黄金十二人+青铜五小强进行抵抗.

 1 /*
 2     一个很老的经典的二分图的梗了
 3     看成两部分分别为(1..n)和(1..m)的二分图
 4     若(x,y)=1 则给x-->y连条边
 5     问题转化为选出最少的点使以这些点为端点的所有边的集合为所有边的集合
 6     也就是最小点覆盖数了
 7     根据K?nig定理我们可以知道 二分图的最大匹配等于这个图的最小点覆盖数
 8     这个鬼东西自己记下来就好了
 9 */
10 #include<iostream>
11 #include<cstring>
12 #include<cstdio>
13 #define MAXN 102
14
15 using namespace std;
16
17 int map[MAXN][MAXN],n,m,link[MAXN],ans;
18 bool vis[MAXN];
19
20 char x;
21
22 inline bool find(int x) {
23     for(int i=1;i<=m;i++) {
24         if(!vis[i]&&map[x][i]) {
25             vis[i]=true;
26             if(link[i]==0||find(link[i])) {
27                 link[i]=x;
28                 return true;
29             }
30         }
31     }
32     return false;
33 }
34
35 int main() {
36     scanf("%d%d",&n,&m);
37     getchar();
38     for(int i=1;i<=n;i++) {
39         for(int j=1;j<=m;j++) {
40             cin>>x;
41             if(x=='1') map[i][j]=1;
42           }
43           getchar();
44     }
45     for(int i=1;i<=n;i++) {
46         memset(vis,0,sizeof vis);
47         if(find(i)) ans++;
48     }
49     printf("%d\n",ans);
50     return 0;
51 }

Vijos CoVH之柯南开锁 (二分图)相关推荐

  1. JavaScript|拖拽|仿Android手机九点连线开锁

    最简单的JavaScript拖动代码 <script> var xx=0,yy=0; function a(v) { xx=event.x-v.offsetLeft; yy=event.y ...

  2. hihocoder 1075 : 开锁魔法III

    描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅有一把钥匙能打开它.初始时,崔克茜将会随机地选择 k 个盒子用魔法将它 ...

  3. iphone开蓝牙wifi上网慢_为啥我开锁总是比别人慢?

    说起手机的蓝牙功能,大家都不陌生,在还没有wifi,网速超级慢,流量也贵得害怕的年代. 蓝牙传送是两台手机之间传输文件最快也最方便的方式,堪称当年手机界的"黑科技"功能.多年过去后 ...

  4. c语言线程锁的原理开锁原理图,C++多线程之可重入锁

    #include #include #include using namespace std; recursive_mutex re; void task1() { re.lock(); cout & ...

  5. 登陆 manager app显示不是私密链接_小米上线了一款靠指静脉识别开锁的私密箱,打造你的私人存储空间...

    印象中的保险箱体积大.价格昂贵.开锁繁琐,一直都认为那是企业老板.成功人士的标配,对于普通家庭来说存在的价值.或实用性方面并不是很高.往常遇到长时间外出旅行,也会担心家里重要的证件.首饰等贵重物品的安 ...

  6. 哈罗单车打不开锁,显示:“可能卡住了 重新开锁”

    点重新开锁,同时亲手去拉单车的锁把子,助它打开 . 转载于:https://www.cnblogs.com/shuangfeike/p/11470945.html

  7. 基于Arduino的无接触式智能门锁(RFID和蓝牙开锁)

    一.简单介绍 本项目基于Arduino开发,支持刷卡(复旦卡)和蓝牙串口密码发送两种方式,支持舵机和继电器(可接电磁锁等)两种开锁方式.详情见代码,代码注释很全的. 文章末尾附源程序.库文件.3D打印 ...

  8. 实训9——蓝牙修改开锁密码

    实训九 : 蓝牙修改开锁密码 一.实验目的 通过ESP32,按键模块和SG90舵机,实现蓝牙发送相应的命令修改按键密码 二.实验内容 1.连接ESP32和按键模块的引脚,以及ESP32和SG90舵机的 ...

  9. 【文末有福利! 】刷脸开锁:背后的技术绝招

    安全君在去年向大家介绍了智能语义安全检测的武林(链接:https://m.aliyun.com/yunqi/articles/66859).今年,有另一大绝招在江湖上兴起:实人认证. 1 且说苦练实人 ...

最新文章

  1. centos6 安装 mantisbt-1.2.8 —— (4)在CentOS6.4中安装配置LAMP环境
  2. 多图指南——微信小程序设计规范
  3. Roguelike游戏的视野算法
  4. getset原子性 redis_一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)
  5. Linux和Windows互传文件可视化工具lrzsz的安装和使用
  6. mysql reset_mysql的reset命令
  7. python迭代器和生成器_python迭代器和生成器
  8. 比例电磁阀(二)阀门开度与速度的关系
  9. 职称计算机个人档案号查询,干部人事档案编号在线查询
  10. 【2019年03月29日】股票的滚动市盈率PE最低排名
  11. 图片加文字用什么软件?推荐这三款软件给你
  12. php 判断华为手机,一招教你如何看穿华为手机的内存类型
  13. 沙之家的塔塔露有事寻求冒险者 (位运算 前缀和 差分
  14. Stimulsoft Reports.JAVA 2022.4.3 Crack
  15. 电感设计中的细节问题:磁芯损耗、线圈设计
  16. 什么是广告广告联盟?
  17. Servlet技术,response 生成图片验证码
  18. sqlserver2005 sql server database services安装失败解决方法
  19. JavaScript => JavaScript编码规范指南
  20. 图论:无向网(UDN)的定义及相关操作

热门文章

  1. Python基础之六面向对象高级编程
  2. 数字电视基本概念学习
  3. 2021-10-23 python第一天
  4. 直接从数据库中查询数据生成email附件(excel)
  5. STM8的程序更换不同芯片时要注意的地方
  6. 根据灰度直方图调整图象亮度
  7. 数据库可视化库_漂亮的javascript数据可视化库
  8. 关于数据跳线制作的标准规范的理解
  9. 你不知道的font-size属性
  10. skywalking数据链路追踪