链接:https://vjudge.net/problem/HDU-2119#author=Smilencer

题意:

众所周知,tyz是一个写bug小能手,以至于如果没有队友的帮助,就ac不了程序。 
今天可怜的XJL又被抓来出数据debug了,你要帮助他以最少的样例消灭所有程序的bug 
数据以矩阵的形式表示出来,整个矩阵中只包含0,1两个数。其中1代表一个bug。 
已知每出一个样例可以消灭一行或者一列的bug,即把一行或一列所有的1变成0。 
你的任务是求出最少需要找多少个样例才能使得整个程序没有bug,即矩阵中的1全部被清除

思路:

x,y建立二分图。

代码:

  1. #include <iostream>
  2. #include <memory.h>
  3. #include <string>
  4. #include <istream>
  5. #include <sstream>
  6. #include <vector>
  7. #include <stack>
  8. #include <algorithm>
  9. #include <map>
  10. #include <queue>
  11. #include <math.h>
  12. #include <cstdio>
  13. #include <set>
  14. #include <iterator>
  15. #include <cstring>
  16. using namespace std;
  17.  
  18. typedef long long LL;
  19. const int MAXN = 5e3+10;
  20. int Next[4][2] = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
  21.  
  22. vector<int> G[MAXN];
  23. int Map[110][110];
  24. int Link[MAXN], Vis[MAXN];
  25. int n, m, k;
  26.  
  27. bool Dfs(int x)
  28. {
  29. for (int node = 1;node <= m;node++)
  30. {
  31. if (Map[x][node] && Vis[node] == 0)
  32. {
  33. Vis[node] = 1;
  34. if (Link[node] == -1 || Dfs(Link[node]))
  35. {
  36. Link[node] = x;
  37. return true;
  38. }
  39. }
  40. }
  41. return false;
  42. }
  43.  
  44. int Solve()
  45. {
  46. memset(Link, -1, sizeof(Link));
  47. int cnt = 0;
  48. for (int i = 1;i <= n;i++)
  49. {
  50. memset(Vis, 0, sizeof(Vis));
  51. if (Dfs(i))
  52. cnt++;
  53. }
  54. return cnt;
  55. }
  56.  
  57. int main()
  58. {
  59. while (~scanf("%d", &n) && n)
  60. {
  61. scanf("%d", &m);
  62. for (int i = 1;i <= n;i++)
  63. for (int j = 1;j <= m;j++)
  64. scanf("%d", &Map[i][j]);
  65. int cnt = Solve();
  66. printf("%d\n", cnt);
  67. }
  68.  
  69. return 0;
  70. }

  

HDU-2119-Matrix(最大匹配)的更多相关文章

  1. hdu 2119 Matrix(二分匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2119 Matrix Time Limit: 5000/1000 MS (Java/Others)    ...

  2. HDU 2119 Matrix

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2119 解题思路: 处理数据,使用公式最小点覆盖数=最大匹配数,使用匈牙利算法求二分图最大匹配即可. ...

  3. HDU——2119 Matrix

    Matrix Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. HDU 4920 Matrix multiplication(bitset)

    HDU 4920 Matrix multiplication 题目链接 题意:给定两个矩阵,求这两个矩阵相乘mod 3 思路:没什么好的想法,就把0的位置不考虑.结果就过了.然后看了官方题解,上面是用 ...

  5. HDU 2686 Matrix 3376 Matrix Again(费用流)

    HDU 2686 Matrix 题目链接 3376 Matrix Again 题目链接 题意:这两题是一样的,仅仅是数据范围不一样,都是一个矩阵,从左上角走到右下角在从右下角走到左上角能得到最大价值 ...

  6. hdu 2119(简单二分图) Matrix

    http://acm.hdu.edu.cn/showproblem.php?pid=2119 一个由0和1构成的矩阵,每次选取一行或者一列将其中的1变成0,求最小删除次数 简单的二分图应用,矩阵的横坐 ...

  7. HDU——T 2119 Matrix

    http://acm.hdu.edu.cn/showproblem.php?pid=2119 Time Limit: 5000/1000 MS (Java/Others)    Memory Limi ...

  8. HDU 2853 (KM最大匹配)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 题目大意:二分图匹配费用流.①最大匹配②最小原配变动 解题思路: 如果去掉第二个要求,那么就是裸 ...

  9. hdu 2686 Matrix 最小费用最大流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2686 Yifenfei very like play a number game in the n*n ...

  10. hdu 5569 matrix dp

    matrix Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5569 D ...

随机推荐

  1. 深入理解JVM - 虚拟机字节码执行引 - 第八章

    概述从外观上看起来,所有的 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果.主要从概念模型的角度来讲解虚拟机的方法调用和字节码执行. 运行时 ...

  2. html5+css3酷炫音频播放器代码

    1. [代码][JavaScript]代码         (function($){    jQuery.fn.extend({        "initAudio" : fun ...

  3. python-函数用法

    Python 一.lower() 方法转换字符串中所有大写字符为小写. lower()方法语法: str.lower() 参数 无. 返回值 返回将字符串中所有大写字符转换为小写后生成的字符串. 练习 ...

  4. #基础概念#之tensor

    中译名:张量 定义: from wiki: In mathematics, tensors are geometric objects that describe linear relations b ...

  5. 机器学习: R-CNN, Fast R-CNN and Faster R-CNN

    做语义分割的大概都知道这几篇文章了,将一个传统的计算机视觉模型,用CNN一点一点的替换,直到最后构建了一个完整的基于CNN的端到端的模型.这几篇文章有一定的连贯性.从中可以看到一种研究的趋势走向. 上 ...

  6. bzoj 4592(洛谷 4344) [Shoi2015]脑洞治疗仪——线段树上二分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4592 1操作就是用线段树来二分找到第一个有 k 个0的位置. 在洛谷上A了,与暴力和网上题解 ...

  7. JSOI2008星球大战——联通块数量

    题目:https://www.luogu.org/problemnew/show/1197 此题不能按时间顺序进行删点.求连通块数量,而应打破时间的思维,先形成一张没有要删去的点的图,再从后往前逐个加 ...

  8. WaitHandle.WaitAll 方法在WPF工程中的应用

    因为WaiAll需要多线程支持, 而WPF是STA模式, 可以通过以下方式实现WaitAll ManualResetEvent[] events:  foreach (ManualResetEvent ...

  9. python斐波拉契数列

    def fib(max): n, a, b = 0, 0, 1 while n < max: print(b) a, b = b, a + b n = n + 1 return 'done' 注 ...

  10. 连接带密码的access数据库

    在网上找了很多都不靠谱,稀里哗啦的弄一堆连接字符串,很不优雅. 这个方法很简单: 1.在“连接”这页中,下方有“输入登录数据库的信息”用户名:admin,并在下面选择“空白密码” 2.在“所有”这页的 ...