HDU 4067 Random Maze
題意:
一幅“隨機圖”定義為有如下性質的圖:
有一個入口和一個出口
有向圖
對於入口 出度比入度大1
對於出口 入度比出度大1
對於其他點 入度等於出度
現給出一幅有向圖 每條邊有2個決策——留下、扔掉 分別花費a和b 問 如果用最少的費用改造出“隨機圖”
思路:
網絡流不錯的題目 如果做過“混合圖歐拉回路”(後文把這個問題成為p)那個zoj的題的話 這道題會有啟發
來回憶p的做法 先將無向邊隨意定向 再利用度來將點劃分成二分圖 利用無向邊建邊 利用度連接這些點與源匯 然後做maxflow 滿流則有解
“隨意定向”啟發我們本題也可以對邊進行一定的處理 因此我們可以先比較a和b 取其中小的狀態 這樣得到的一定是費用最小的決策 但不保證是“隨機圖” 那麼此時我們只需要改變決策 在費用最小的情況下達到“隨機圖” 此時想到了費用流
“利用度構圖”啟發我們同樣討論 in>out in==out inout 的點 我們與S連邊 對於 in
雖然我們的圖不是二分圖 但是層次關系仍然明顯
我們將m條輸入的邊按照a和b的大小關系 分別建邊u->v 容量1 費用b-a 表示將邊從留下狀態改為扔掉狀態 反之亦然
那麼此時流量就表示通過更改邊的策略 能將多少“度”平衡掉 也就是說 如果maxflow滿流 則可以構成“隨機圖”
剩下的就是最小費用 很明顯就是剛才建邊的費用之和 最後費用+“隨即定向”時的最小花費就是答案
PS:要盡量去理解網絡流中“流”的實際意義 想辦法構造圖
代碼:
#include
#include
#include
#include
#include
#include