
二分图的匹配
凌阡陌
随心而为,我自逍遥
展开
-
二分图
基本概念二分图顶点可以分成两个不相交的集使得在同一个集内的顶点不相邻(没有共同边)的图。最大匹配这个没啥说的,就是两个集合中的元素两两配对,使配对的数量最多。独立集从所有点中,选出一些点,这些点两两之间都没有边相连。最大独立集所有独立集中,元素最多的那个。(不一定唯一)最小点覆盖选出一些点,使到所有的边至少都有一个端点在这个点集里面。最少边覆盖用最少边,使所有顶点都在选中的这些边上至少出现一次原创 2012-06-07 20:50:26 · 330 阅读 · 0 评论 -
nefu493负载平衡问题
负载平衡问题G 公司有n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使n 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。 对于给定的n 个环形排列的仓库的库存量,编程计算使n 个仓库的库存数量相同的最少搬运量。【问题分析】转化为供求平衡问题,用最小费用最大流解决。【建模方法】首先求出所有仓库存货量平均值,设第i个仓库原创 2012-10-10 16:03:13 · 836 阅读 · 1 评论 -
nefu486魔术球问题(增加节点最大流模板)
魔术球问题Time Limit 1000msMemory Limit 65536Kdescription假设有n根柱子,现要按下述规则在这n根柱子中依次放入编号为1,2,3,...的球。(1)每次只能在某根柱子的最上面放球。(2)在同一根柱子中,任何2个相邻球的编号之和为完全平方原创 2012-10-09 11:38:58 · 575 阅读 · 0 评论 -
hdu3718Similarity
题意:匹配两个串,求最大匹配数。匹配的两个串形似即可。#include #include #include using namespace std;const int oo=1e7;const int mm=111111;const int mn=8888;int node,src,dest,edge;int ver[mm],flow[mm],cost[mm],next[mm]原创 2012-10-08 11:06:02 · 302 阅读 · 0 评论 -
hdu2426Interesting Housing Problem
http://acm.hdu.edu.cn/showproblem.php?pid=2426#include #include using namespace std;const int oo=1e7;const int mm=111111;const int mn=8888;int node,src,dest,edge,ans;int ver[mm],flow[mm],cost原创 2012-10-06 22:04:09 · 333 阅读 · 0 评论 -
hdu2813one fight one
明显的二分图的最佳匹配,直接用map+最小费用最大流,但是很悲惨的超时了,后来换成字典树+最小费用最大流,还是超时,哪位能帮我看一下哪有问题吗?在网上搜了一下,这个题大家都是用KM算法做的,难道最小费用最大流不可以???#include #include #include using namespace std;const int oo=1e7;const int mm=1111原创 2012-10-06 21:24:10 · 339 阅读 · 0 评论 -
hdu1853最小费用最大流
题意:一张有向图,找出图中所有的回路,求所有回路权值总和。要求,所有的点只能属于一个回路,每个回路中至少包含两个点,如果不存在输出-1.分析:所有点最多只属于一个回路,即所有的点入度和出度都不会大于1,利用最小费用最大流。不知道这个题是怎么回事,一开始是mn=888,mm=11111,居然过不去。。。。#include #include using namespace std;c原创 2012-10-05 20:44:59 · 399 阅读 · 0 评论 -
hdu1569方格取数(2)
跟hdu1565是一样的,但是杭电现在真的判不出来数组越界了,这已经是第二次了!!!#include #include using namespace std;const int oo=1e9;const int mm=1111111;const int mn=9999;struct Node{ int i,j,id,c;}nod[mn];int node,sr原创 2012-10-02 19:38:49 · 455 阅读 · 0 评论 -
hdu1565二分图点权最大独立集
分析:同上一道题是一样的,就是一个方格取数的模型。#include #include using namespace std;const int oo=1e9;const int mm=111111;const int mn=999;struct Node{ int i,j,id,c;}nod[mm*mn];int node,src,dest,edge;int v原创 2012-10-01 16:46:55 · 320 阅读 · 0 评论 -
poj1466最大独立集
跟上一道题差不多,都是在满足题目条件的情况下,使得人数最大。但是不同点在于没有性别之分,也就是说他可以两边的人都带,所以在求完最大匹配数之和再除以2.#include #include using namespace std;const int oo=1e9;const int mm=1111111;const int mn=1111;int node,src,dest,edge;原创 2012-10-02 19:28:42 · 359 阅读 · 0 评论 -
poj2771二分图点权最大独立集,用Dinic解决
题意:有一个保守的老师,带领学生出去玩,但是他要保证学生不能成为夫妻,求在保证这个前提的情况下,他最多能带多少人。分析:典型的二分图点权最大独立集的问题,以男女为界,分为两组,实现二分图。注:因为src是0,所以不能再从0开始了,因为这个找了好长时间的错~~~~#include #include #include #include using namespace std;co原创 2012-10-02 16:34:53 · 500 阅读 · 0 评论 -
zoj3165二分图点权最大独立集+dinic匹配时的匹配数
题意:要想将一些学生分组,其中有一些学生不能跟另外一些学生在一起,问应该如何分组,在满足要求的前提下,使得人数最多。分析:就是一个方格取数的模型。二分图点权最大独立集。。。特点是要求出二分图两边匹配的数目。#include #include using namespace std;const int oo=1e9;const int mm=111111;const int原创 2012-10-02 14:51:24 · 393 阅读 · 0 评论 -
poj2594点可重复的最小路径覆盖
点可重复的路径覆盖问题用匈牙利算法+floyd闭包来求解。#include #include #include #include #include #include #include #include #include #define MAX 550using namespace std;bool map[MAX][MAX],used[MAX];int mat[MAX]原创 2012-09-27 20:50:03 · 379 阅读 · 0 评论 -
poj3041 二分图的最小点覆盖
好神奇啊!将n*n的矩阵的每行和每列分别看成一个点,而坐标就作为两个点的连线,这样的话这个题就转换为最少几个点能够覆盖到所有的边,神奇吧!#include #include #include using namespace std;#define M 510#define N 510bool used[N];int link[N];int g[M][N];int gm,gn;原创 2012-06-07 21:14:46 · 251 阅读 · 0 评论 -
nefu492运输问题
W公司有m个仓库和n 个零售商店。第i 个仓库有ai 个单位的货物;第j 个零售商店需要bj个单位的货物。货物供需平衡,即。从第i 个仓库运送每单位货物到第j 个零售商店的费用为Cij 。试设计一个将仓库中所有货物运送到零售商店的运输方案,使总运输费用最少。 对于给定的m 个仓库和n 个零售商店间运送货物的费用,计算最优运输方案和最差运输方案。与分配问题是一样的,都是最小费用最大流和最大费原创 2012-10-10 15:06:56 · 697 阅读 · 0 评论