Clever King
题意:
好迷的题意。。。
有 n 个产品,m 种矿石,每个产品有价值 value[i],每种矿石有花费 cost[j] 。每种产品需要其它的一些矿石和产品才能生产出来,问你要怎么选择产品和矿石才能使 sum{value}-sum{cost}最大。
tags:
明显建图做,而这种有依赖关系的,符合闭合图的特征,这个题就是转为最大权闭合子图模型。
首先转为网络流模型建图,源点为 S,汇点为 T,如果产品 u 依赖 产品 v1 和 矿石 v2 ,那么就连边:(u -> v1, INF) 、(u -> v2, INF) 。
另外对每个产品 u 连边:(S -> u, val[u]), 对每个矿石 v 连边:(v -> T, cost[v]) 。
代码:https://paste.ubuntu.com/p/VKmyV2knnH/
群里看到一张图,对闭合图解释的很好: