PIGS
题目链接:http://poj.org/problem id=1149
题目大意:
迈克有个养猪场,养猪场里有M个猪圈,每个猪圈都上了锁。迈克没有钥匙,而要买猪的顾客一个接一个来到养猪场,每个顾客有一些猪圈的钥匙,要买一定数量的猪。当每个顾客来时,将有钥匙的猪圈全部打开,从中挑出一些买走,然后迈克可以重新分配这些猪圈里面的猪。当顾客离开后,门又被锁上。问迈克最多可以卖多少猪。
解题思路:
网络流的题目难就难在建图,这道题目的建图是这样的:
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
*/
#include
(1)将顾客看做是除了源点和汇点以外的结点,并且另外设两个结点:源点和汇点。 (2)源点和每个猪圈的第1个顾客连边,边的权是开始时猪圈中猪的数量。 (3)若源点和每个结点之间有重边,可以合并。 (4)顾客j紧跟顾客i之后打开猪圈,则边
的权是正无穷大,因为如果j紧跟i之后打开,迈克可以根据j的需求将其他猪圈调到该猪圈,这样顾客j就可以买到尽可能多的猪。 (5)每个顾客和汇点之间连边,表示顾客希望买猪的数目。
这样题目就成了基础的网络最大流。