Clever King
题意
T组数据,有n个产品,m个矿坑。接下来n个数字happiness[i]表示第i个产品的幸福指数,接下来m个数字,ori[i]表示第i个矿坑的开发费用。接下来n行,每行先输入两个数字n1,n2,分别表示第i号产品需要开发的矿坑,和需要的原材料产品。(矿坑开发后材料无限,产品生产后幸福指数一定会增加,不管是作为产品本身还是原材料),要求 幸福指数 - 费用 的最大值。
思路
最大权闭合子图模板。【关于网络流】(ND)
定义
一个子图(点集), 如果它的所有的出边都在这个子图当中,那么它就是闭合子图。
点权和最大的闭合子图就是最大闭合子图。
简单说就是有一些点,每个点有一些点权(正负都有),要选一个点,就必须要选它所连向的点。
有可能连成一条链,像这样:x->y->z->…
求合法的点集的最大的点权和。
构图
设s为源点,t为汇点。
使s连向所有的正权点(非负权点),边权为点权。
使所有非负权点(负权点)连向t,边权为点权的绝对值。
若需要选y才能选x,连一条由x到y的边,边权是∞。
最大点权和 = 正权点和 - 最小割
看!代码
1 |
|