大白书355 // UVa11419 SAM I AM // Rujia Liu #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; + ; // 单侧顶点的最大数目 // 二分图最大基数匹配 struct BPM { int n, m; // 左右顶点个数 vector<int> G[maxn]; //…
题意:给一个01矩阵,每次可以选一行或一列,打掉上面所有的1,求打掉所有的1所需的最小次数. 思路:经典的模型了,二分图最小覆盖=最大匹配.所谓最小覆盖是指选最少的点关联所有的边.容易得到将行和列看成点,1看成边,那么就是选尽量少的行和列来关联所有的1,最小覆盖模型,用最大匹配做.可以选择匈牙利算法,或者直接最大流. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33…
题意 给出一个R*C大小的网格,网格上面放了一些目标.可以在网格外发射子弹,子弹会沿着垂直或者水平方向飞行,并且打掉飞行路径上的所有目标.你的任务是计算最少需要多少子弹,各从哪些位置发射,才能把所有目标全部打掉. 分析 啊!原来这个模型叫 最小覆盖模型啊!难道不是最小割直接做嘛?? 二分图最小覆盖:既选择尽量少的点,使得每条边至少有一个端点被选中.可以证明,最小覆盖数等于最大匹配数. 本题的建模方法: 将每一行看作一个X结点,每一列看作一个Y结点,每个目标对应一条边.这样,子弹打掉左右的目标意味…
[转http://www.cppblog.com/abilitytao/archive/2009/09/02/95147.html  ->  http://yejingx.ycool.com/post.2801156.html:http://hi.baidu.com/cjhh314/blog/item/ded8d31f15d7510c304e1591.html] 二分图最小覆盖的Konig定理及其证明 一.定义 二分图: 顶点可以分类两个集合X和Y,所有的边关联在两个顶点中,恰好一个属于集合X,…
http://acm.hdu.edu.cn/showproblem.php?pid=3729 I'm Telling the Truth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1427    Accepted Submission(s): 719 Problem Description After this year’s col…
题意 现在要将5种型号的衣服分发给n个参赛者,然后给出每个参赛者所需要的衣服的尺码的大小范围,在该尺码范围内的衣服该选手可以接受,再给出这5种型号衣服各自的数量,问是否存在一种分配方案使得每个选手都能够拿到自己尺码范围内的衣服. 思路 明显的二分图多重最大匹配问题:每个点能匹配的边不再限制1个,而是多个. 做法:最大流.虽说也有对应的匈牙利算法,但是我还是图省事用最大流做了. 建图:源点连接每个型号的衣服,容量为能够匹配的个数(数量),汇点连接每个队员,容量也为能够匹配的个数(1),其他匹配边容…
这是一个基础的二分图,题意比较好理解,给出n个人,其中有m对互不了解的人,先让我们判断能不能把这n对分成两部分,这就用到的二分图的判断方法了,二分图是没有由奇数条边构成环的图,这里用bfs染色法就可以判断,其次让我们求分在两部分的最大对数,这就是二分图的最大匹配问题,这里数据只有200,所以匈牙利算法求蹭广路径的办法可以解决这个问题,也相对比较容易编写. 另外一开始我链式前向星的数组开小了,G++居然返回超时,后来换了C++才RE,想到数组越界的问题,不得不说这些编译器真傲娇啊- #includ…
序: 既然是个图,并且求边数的最大值.那么这就可以转化为网络流的求最大流问题. 只需要将源点与其中一子集的所有节点相连,汇点与另一子集的所有节点相连,将所有弧的流量限制置为1,那么最大流 == 最大匹配.(感谢yulemao大神的指点) 只需要在初始化的时候修改一下,就可以直接用求最大流的算法模板了. 本文代码使用EK算法, 为POJ 1469的AC代码. EK算法解析 源代码: /* About: 二分图最大匹配_网络流EK算法 2017/04/22 */ #include <iostream…
HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配) Description You're giving a party in the garden of your villa by the sea. The party is a huge success, and everyone is here. It's a warm, sunny evening, and a soothing wind send…
题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 //g没有边相连则初始化为0 //uN是匹配左边的顶点数,vN是匹配右边的顶点数 //调用:res=hungary();输出最大匹配数 //优点:适用于稠密图,DFS找增广路,实现简洁易于理解 //时间复杂度:O(VE) //******************* #include <cstdio&…