大意是这样的:
· 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。
· 一开始所有猪圈都是关闭的。
· 依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。
· 每个顾客分别都有他能够买的数量的上限。
· 每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。
问总共最多能卖出多少头猪。
看过之后,参考了网上的思路才明白的。
只能感叹一句:最大流要在图上做,可是,图在哪儿啊,图在哪儿啊。。有时候建立出来图了,发现自己建立的图
思路 :
如果一个顾客打开了一个没有被打开过的猪舍,则从源点发出一条容量为该猪舍中猪的头数的边。
如果一个顾客打开了一个已经打开过的猪舍,则从上一个打开该猪舍的顾客向该顾客添加一条容量为无穷大的边。
然后,每个顾客都有一条流向汇点的边,容量为该顾客要买的猪要数量。
求出最大流即可。
用的以前写的SAP邻接表模板,0MS