题意:
n个不同单位,每个单位ri 人;m个桌子,每个桌子坐ci人; 同一个单位的人不坐在一个桌子上,给出所有可能的方案。
建模:
建立二分图,每个单位为X集合中的结点,每个桌子为Y集合的结点,增加源点S和汇点T。
1. 添加 S->Xi,且权值为第i个单位的人数。
2. 添加 Yi->T,且权值为第i个桌子可容纳的人数。
3.添加 Xi ->Yi,且权值为1。
求网络最大流,如果最大流量等于所有单位人数之和,则存在解,否则无解。对于每个单位,从X集合对应点出发的所有满流边指向的Y集合的顶点就是该单位人员的安排情况(一个可行解)。
分析:
对于二分图, 每个定点可以有多个匹配,称这类问题为二分图多重匹配。X,Y集合之间的边容量全部是1,保证两个点只能匹配一次(一个餐桌上只能有一个单位的一个人),源汇的连边限制了每个点匹配的个数。求出网络最大流,如果流量等于X集合所有点与S边容量之和,那么则说明X集合每个点都有完备的多重匹配。
posted on 2011-03-09 12:50
小阮 阅读(447)
评论(0) 编辑 收藏 引用 所属分类:
数据结构和算法