在看这篇博文之前建议看一下上一篇匈牙利法解决二分图最大匹配问题: https://www.cnblogs.com/fangxiaoqi/p/10808729.html 这篇博文参考自:https://www.cnblogs.com/logosG/p/logos.html 最优匹配 我们这里先说一下什么叫做最优匹配(也被称作最大带权分配). 简而言之,最优匹配就是指在带权边的二分图中,求一个匹配使得匹配边上的权值和最大. 两个例子 例子1 出自wenr博客: http://www.cnblogs.…
传送门:http://poj.org/problem?id=2195 Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 26151   Accepted: 13117 Description On a grid map there are n little men and n houses. In each unit time, every little man can move one unit st…
题目链接: https://vjudge.net/problem/POJ-2195 题目大意: 给定一个N*M的地图,地图上有若干个man和house,且man与house的数量一致.man每移动一格需花费$1(即单位费用=单位距离),一间house只能入住一个man.现在要求所有的man都入住house,求最小费用. 思路: KM算法传送门: 理解篇    运用篇 每个man和house建立带权二分图,曼哈顿距离就是边的值,这里要求最小费用,也就是二分图最小权值匹配,但是KM算法求的是二分图最…
传送门:http://poj.org/problem?id=3565 Ants Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 7650   Accepted: 2424   Special Judge Description Young naturalist Bill studies ants in school. His ants feed on plant-louses that live on apple tree…
前言 二分图的重点在于建模.以下的题目大家可以清晰的看出来这一点.代码相似度很高,但是思路基本上是各不相同. 题目 HDU 1179 Ollivanders: Makers of Fine Wands since 382 BC. 题意与分析 有n个人要去买魔杖,有m根魔杖(和哈利波特去买魔杖的时候一样,是由魔杖选人).接下来是m行,每行第一个数k是第i根魔杖可以选的人数,接着k个数表示这根魔杖选的人的编号.最后问老板最多能卖出多少根魔杖.模板题. 代码 /* * Filename: hdu117…
题意:有一个N个点的有向带权图,要求找若干个有向圈,使得每个点恰好属于一个圈.请输出满足以上条件的最小权和. 解法:有向圈?也就是每个点有唯一的后继.这是一个可逆命题,同样地,只要每个点都有唯一的后继,那么它们一定恰好属于一个圈.而"唯一"可以想到二分图匹配.把每个点拆成两个点,分别放在二分图的两边.两侧的点连的边就是原来的边的转化,另外再给源点和汇点分别连 n 条容量为1.费用为0的边.这样就保证了每个点有唯一的后继.再由于是要求所有点都属于一个圈,也就是完美匹配,就判断一下是否满流…
Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5539    Accepted Submission(s): 2907 Problem Description On a grid map there are n little men and n houses. In each unit time, every l…
POJ2125 题意简述:给定一个有向图,要通过某些操作删除所有的边,每一次操作可以选择任意一个节点删除由其出发的所有边或者通向它的所有边,两个方向有不同的权值.问最小权值和的解决方案,要输出操作. 乍一看是要用点去覆盖边,联想到二分图的最小点权覆盖,通过拆点,我们可以得到二分图.每个点都拆成两个点,一个作为入点,另一个作为出点.于是我们构建了一个标准的二分图最小点权覆盖的模型 解决二分图最小点权覆盖的的算法并不复杂,创造一个源点和汇点,源点到左边的点连边,容量为对应点的权值,同理右边的点向汇点…
题意:给定N个点,M条边,M >= N-1.已知M条边都有一个权值,已知前N-1边能构成一颗N个节点生成树,现问通过修改这些边的权值使得最小生成树为前N条边的最小改动总和为多少? 分析:由于计算的最小改动且为最小生成树则显然前N-1条边肯定权值都减少,后面的边权值都增加.由于选择的边为前N-1得到最小生成树,因此首先将N-1条边构图,然后对后面的每一条边,那么这条边所构成的环中,有任意一条边的a与该边b,设原始权重为w[a],w[b],改变量为d[a],w[b],则有w[a] - d[a] <…
单源最短路径问题:给定一个带权有向图 G = (V, E), 其中每条边的权是一个实数.另外,还给定 V 中的一个顶点,称为源.现在要计算从源到其他所有各顶点的最短路径长度.这里的长度是指路上各边权之和.这个问题通常称为单源最短路径问题. Dijkstra算法: 一:基本算法 将图 G 中所有的顶点 V 分成两个顶点集合 VA 和 VB.如果源点 S 到 u 的最短路径已经确定,则点 u 属于集合 VA ,否则属于集合  VB.最开始的时候 VA 只包含源点 S,其余的点属于 VB,算法结束时所…