PIGS
題目鏈接:http://poj.org/problem?id=1149
題目大意:
邁克有個養豬場,養豬場裡有M個豬圈,每個豬圈都上了鎖。邁克沒有鑰匙,而要買豬的顧客一個接一個來到養豬場,每個顧客有一些豬圈的鑰匙,要買一定數量的豬。當每個顧客來時,將有鑰匙的豬圈全部打開,從中挑出一些買走,然後邁克可以重新分配這些豬圈裡面的豬。當顧客離開後,門又被鎖上。問邁克最多可以賣多少豬。
解題思路:
網絡流的題目難就難在建圖,這道題目的建圖是這樣的:
/*
ID: [email protected]
PROG:
LANG: C++
*/
#include
(1)將顧客看做是除了源點和匯點以外的結點,並且另外設兩個結點:源點和匯點。
(2)源點和每個豬圈的第1個顧客連邊,邊的權是開始時豬圈中豬的數量。
(3)若源點和每個結點之間有重邊,可以合並。
(4)顧客j緊跟顧客i之後打開豬圈,則邊
的權是正無窮大,因為如果j緊跟i之後打開,邁克可以根據j的需求將其他豬圈調到該豬圈,這樣顧客j就可以買到盡可能多的豬。
(5)每個顧客和匯點之間連邊,表示顧客希望買豬的數目。
這樣題目就成了基礎的網絡最大流。