题目链接
POJ 2987
方法:网络流最大权闭合图
题目分析
题目大意
老板要裁员,他有若干个员工,已知裁每一个员工的损失/获益,但是裁一个领导的话,就必须要把他的所有下属都裁掉,问当老板获得的收益最大时,要裁掉几个人,获得的收益是多少?
解析
网上找最大权闭合图的问题时搜到的这个题。
将图构造出来,发现每一个点的后继节点都在图中,所以这个图是一个最大权闭合图。我们希望选择一些点,使这些点权之和最大,但是选择一些点的话会产生一些选择这些点的花费,也就是会说,如果你裁一个领导,可能获益为正,但是你必须要同时把这个领导的下属给裁掉,可能产生负的利益。这样转化为了一个最大权闭合图的问题,建立一个超级源点,一个超级汇点,所有正权的点连接源点s,负权的点连接汇点t,对于每一对(领导,下属)关系,我们建立两者之间的流量为正无穷,从领导指向下属,求出这个图的最优解。最优解很明显 = 所有正权顶点的权值之和 - 不选的正权顶点的权值和 - 选择这些正权顶点的总费用。当对于我们建的图求最小割时,求的即为(不选的正权顶点权值和 + 选择这些正权顶点的总费用)
参考题解:
注意要用long long
代码
dinic解法
1 |
|
ISAP解法
1 | // poj 2987 |