奇思妙想最大流
题意
给你N个士兵的信息,给出每个士兵可以杀的一些人的编号,但是士兵只能挑选一个敌人并杀死他,现在有K个药水,1瓶药水只能作用在一个士兵的身上,每个士兵服用一瓶药水就可以多杀一个人,每个敌人只能被一个士兵杀死,现在问你所有士兵最多可以杀死多少人。
思路
建最大流的图, 源点连到每个士兵上,权值为1,代表每个士兵一开始就可以杀一人,源点到另外特殊的一点权值为K,然后这个特殊点连到每个士兵身上,每个权值为1,代表这K个药水可以分给士兵,并且每人最多1个。每个士兵连到对应的敌人上,代表他可以杀死某个敌人,敌人最终连到汇点,代表每个士兵只能被杀死一次。然后最大流就是答案了。
1 | #include <iostream> |