题目链接:http://poj.org/problem?id=1149
大意:有M个猪圈,每个猪圈关着一定数量的猪,作为管理员的Mirko,竟然没有猪圈的钥匙,钥匙在哪呢,有N个顾客,每个顾客拿着其中几个猪圈的钥匙(作为管理员没有钥匙,竟然在顾客的手里,有点难以理解啊,但这不是重点),顾客可以在这些猪圈里购买需要数量的猪,当顾客把猪圈打开购买猪后(不会再关掉),Mirko可以任意将某个开着的猪圈里的猪移动到另一个开着的猪圈里,问Mirko该如何做,能够卖出去最多数量的猪。
解题思路:该题归属于网络流方面的题,难点在于如何构建网络,在网上看到一种很巧妙的构图方法,构图思路如下:
1.取超级源点和超级汇点;
2.当猪圈被第一次打开时,在源点与当前顾客之间连接一条边,容量为该猪圈的猪的头数;
3.当某个猪圈 不是被第一次打开时,在上一个打开该猪圈的顾客与当前打开该猪圈的顾客之间连接一条边,容量为无穷大;
4.在每个顾客与汇点之间连接一条边,容量为该顾客要买猪的头数。
构图完成后套用Edmonds-Karp算法的模版即可&