二分图最大匹配的K?nig定理及其证明 本文将是这一系列里最短的一篇,因为我只打算把K?nig定理证了,其它的废话一概没有.    以下五个问题我可能会在以后的文章里说,如果你现在很想知道的话,网上去找找答案:    1. 什么是二分图:    2. 什么是二分图的匹配:    3. 什么是匈牙利算法:(http://www.matrix67.com/blog/article.asp?id=41)    4. K?nig定理证到了有什么用:    5. 为什么o上面有两个点. K?nig定理是…
[吐槽] 嗯好吧这个东西吧..其实是一开始做一道最小点覆盖的题的时候学到的奇妙深刻的东西 然后发现写了很长 然后就觉得不拎出来对不起自己呀哈哈哈哈 咳咳好的进入正题 [正题] 在这里码一下最小点覆盖的相关知识 http://www.matrix67.com/blog/archives/116 (二分图最大匹配的König定理及其证明) (所以说其实我也很想知道为什么那个o上面有两个点啊哈哈哈哈) 嗯还是把自己对于上面那篇东西的理解写一下吧整理整理qwq König定理 一个二分图中最大的匹配数=…
Dilworth定理:偏序集能划分成的最少的全序集的个数与最大反链的元素个数相等. 证明:http://www.cnblogs.com/itlqs/p/6636222.html 题目让求的是最大反链的长度,因此可以转化为最少能划分成的链的个数.这个问题可以用二分图的最大匹配做. 建立一个二分图,两边都是n个点,原图的每个点 i 对应两个,在左边的叫做 i1, 在右边的叫做 i2 . 然后原图中如果存在一条边 (x, y),那么就在二分图中建立 (x1, y2) 的边. 这样建立二分图之后,原图的…
[转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,…
二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知道什么是最小点覆盖,我也在这里说一下:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边. 2.最小路径覆盖=最小路径覆盖=|G|-最大匹配数 在一个N*N的有向图中,路径覆盖就是在图中找一些路经,使之覆盖了图中的所有顶点, 且任何一个顶点有且只有一条路径与之关联:(如…
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. #include<stdio.h> #include<string.h> #include<stdlib.h> int n1,n2; ][]; //数组开大点 ][],mapy[][]; ][];//邻接矩阵true代表有边相连 ],visit[]; in…
二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> u…
http://acm.hdu.edu.cn/showproblem.php?pid=2063 题意:有m个男,n个女,和 k 条边,求有多少对男女可以搭配. 思路:裸的二分图最大匹配,匈牙利算法. 枚举每一个男生,然后对其DFS,在DFS中枚举女生,如果有边相连的话,如果这个女生还没有搭档(match == -1),那么这个女生的搭档就是当前的男生,否则继续DFS这个女生的搭档,看看能不能让这个女生本来的搭档和其他女生搭配,从而给当前的男生腾出位置. #include <cstdio> #in…
#78. 二分图最大匹配 从前一个和谐的班级,有 nl 个是男生,有 nr 个是女生.编号分别为 1,…,nl 和 1,…,nr. 有若干个这样的条件:第 v 个男生和第 u 个女生愿意结为配偶. 请问这个班级里最多产生多少对配偶? 输入格式 第一行三个正整数,nl,nr,m. 接下来 m 行,每行两个整数 v,u 表示第 v 个男生和第 u 个女生愿意结为配偶.保证 1≤v≤nl,1≤u≤nr,保证同一个条件不会出现两次. 输出格式 第一行一个整数,表示最多产生多少对配偶. 接下来一行 nl …
学习网络流中ing...作为初学者练习是不可少的~~~构图方法因为书上很详细了,所以就简单说一说 把光束作为图的顶点,小行星当做连接顶点的边,建图,由于 最小顶点覆盖 等于 二分图最大匹配 ,因此求二分图最大匹配即可. 邻接矩阵,DFS寻找增广路,匈牙利算法 邻接矩阵:复杂度O(n^3) 如果使用邻接表:复杂度O(n*m) #include<cstdio> #include<cstring> #include<cmath> #include<iostream>…