S-T割将集合分为两个部分
1.Dual Core CPU
http://poj.org/problem?id=3469
题目分析:
双核cpu,有n个的模块,给出第i个模块在第一个核运行的费用和在第二个核运行的费用。以及m对模块如果不在同一个核中运行要多耗费的费用。求最小费用
分析:
注:ai为第i个模块在第一个核运行的耗费,bi为第i个模块在第二个核运行的耗费
cpu的两个核分别当做源点和汇点,源点与模块i连一条边,容量为ai,i与汇点连一条边,容量为bi。对于有限制的模块,连边(u,v)(v,u)容量为w
求最大流
ps(也可以拆点,每个点拆成两个u和u’,u->u’容量为INF,source与u连边容量为ai,u’->sink容量为bi,对于有限制的模块,u’->v,v’->u容量为w,求最大流
2、Paratroopers
http://poj.org/problem?id=3308
题目分析:
在某行某列设立激光发射器,可以杀死该行或该列的所有敌人,给出在某行,某列设立激光发射器的费用。给出m个敌人的坐标,求要消灭所有敌人的最小花费
分析:
行列匹配法建图
题目是费用的乘积,取对数,转化为和
每行与source连边,容量为log(r[i]),每列与sink连边容量为log(c[i]),对于某个敌人(u,v)连边u->v 容量INF
求最大流
3、Friendship
http://poj.org/problem?id=1815
题目描述:
n*n的矩阵,如果i与j有边为1,否则为0,求要使得s,t不连通最少要删除的点数,如果有多种方案,输出分数最小的
分析:
点连通度求解,按通常的拆点变为边连通度,变成求最小割
u->u’为1
(u,v)边变成 u’->v,v’->u 为INF
源点为s’,汇点为t
求最大流
然后从小到大枚举顶点,如果某个点属于最小点割集,那么maxflow会减小
4、Unique Attack
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2587
题目描述:
n台计算机,通过m条光纤相连,给出m条破坏该光纤的费用,求使得s,t不连通所需要的最小费用是否唯一
分析:
边连通度求解,判断最小割的唯一性
对于边(u,v,w)变成 (u,v,)和(v,u) 容量为w
求s到t的最大流,然后从s正向dfs,从t逆向dfs,求两次遍历到的点数和是否为N
5、Panic Room
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2788
题目描述:
你是电子防护系统9042 的首席程序员,这套软件是Jellern 公司最新、最好的家用安全软件。这套软件被设计用来保护一个房间。这套软件可以计算为了阻止从其他房间进入被保护的房间至少需要锁上几扇门。每扇门连接两个房间,只有一个控制面板,通过控制面板可以开启门。这个控制面板只能从门的某一面才能打开。例如,如果房子的布局如图6.30 所示,房间编号为0~6,标有”CP”的一面表示控制面板所在的一面(从这一面所在的房间可以打开这扇门)。在图中,为了阻止从房间1 进入房间2,至少需要锁上2 扇门,即:房间2 和房间1 之间的门、房间3 和房间1 之间的门。注意,不能阻止从房间3 进入房间2,因为总是可以在房间3 通过控制面板打开房间3 和房间2 之间的门。
分析:
边连通度,最小割求解
超级源点为s,s与所有有盗贼入侵的房间连边为INF
如果(u,v)有边,则变成(u,v)为INF,(v,u)为1,求解s到t的最大流