luogu 匈牙利算法 cpp include include include using namespace std; int n, m, uu, vv, e, lnk[1005], ans; bool a[1005][1005], vis[1005]; bool dfs(int u){ for( ...
分类:
编程语言 时间:
2017-12-21 23:06:40
阅读次数:
198
算法讲解:二分图匹配 二分图匹配,自然要先从定义入手,那么二分图是什么呢? 二分图: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A, ...
分类:
编程语言 时间:
2017-12-16 23:04:05
阅读次数:
170
个人心得:二分图啥的一点都不知道,上网借鉴了下,请参考http://blog.csdn.net/thundermrbird/article/details/52231639 加上自己的了解,二分图就是将图形拆分成俩半,俩边的点通过边界相连接。匹配就是不存在俩条边存在同一顶点,就是一个顶点最多连接一条 ...
分类:
编程语言 时间:
2017-12-11 21:15:21
阅读次数:
268
【传送门:BZOJ4554】 简要题意: 给出n*m的矩阵,炸弹的炸弹范围是自己所在行和列(如果碰到'#'的话,就会被挡住),可以在'*'点上放炸弹,'#'表示不能放炸弹而且炸弹不能穿透它,'x'表示不能放炸弹但是炸弹可以穿透它,请问放最多炸弹使得每个炸弹都不能炸到其他炸弹 题解: 二分图匹配 因为 ...
分类:
其他好文 时间:
2017-12-09 13:13:08
阅读次数:
136
这两个星期一直没什么时间上机,最近学了学二分图,这里就来记录一下。 分割线 先讲讲一些基本概念: 二分图:在一个图中,如果图中的点可以被分为两个部分,两部分之间有若干条边相连,且每个部分的点之间无边相连,则该图是一个二分图。由此可以很容易知道,二分图绝对是一个无环图。 匹配:图论中,一个“匹配”是一 ...
分类:
其他好文 时间:
2017-12-09 12:59:07
阅读次数:
197
http://poj.org/problem?id=1419 题意: 一张图黑白染色,相邻点不能都染黑色,最多能染几个黑色点 最大点独立集 但是图不能同构为二分图,不能用二分图匹配来做 那就爆搜吧 还可以转化为补图的最大团问题 Graph Coloring Time Limit: 1000MS Me ...
分类:
其他好文 时间:
2017-12-08 23:11:35
阅读次数:
225
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1854 题解: 并查集(还可以用匈牙利算法进行单路增广的二分图匹配) 把每个武器看成是一条边,每个伤害值看成是一个点,那么每一条边就连接了两个点。并把一条边e与其一个端点u的“对应”表示为用这个... ...
分类:
其他好文 时间:
2017-12-08 17:05:45
阅读次数:
156
二分图匹配其实十分简单,原理只有一个,能换则换,腾出这个妹子的位置,不要考虑其他人是不是很不满意从他喜欢中最喜欢的那一个变成了他喜欢中的最不喜欢的那一个,知道了这个原理,n遍DFS就可以过了: include include const int Inf=1e9+10,maxn=5010,maxm=5 ...
分类:
其他好文 时间:
2017-12-02 11:17:08
阅读次数:
85
"原题" 本题为最小点覆盖,而最小点覆盖=最大二分图匹配 //最小点覆盖:用最少的点(左右两边集合的点)让每条边都至少和其中一个点关联。 cpp include include define N 510 using namespace std; int edge[N][N],n,m,lover[N] ...
分类:
其他好文 时间:
2017-12-01 16:36:51
阅读次数:
122
"原题" 对于每个时间进行网络流(二分图匹配人和门)直到匹配到的人数等于总人数的时候输出,最大时间是n m,大于即为impossible cpp include include include define pos(x,y) (x 1) m+y using namespace std; int n, ...
分类:
其他好文 时间:
2017-12-01 15:10:57
阅读次数:
166