首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 2435 There is a war:最小割與邊修改優化的最大流博弈

     編輯:關於C++

問題建模

有向圖,源點 1,匯點 n。邊有摧毀成本。國 1 可新增或修改一條邊(2~n-1 之間),使其不可摧毀(容量 INF)。國 2 以最小總成本切斷 1 到 n 的連通。求國 1 能迫使國 2 支付的最大最小割值。

核心洞察

  1. 先求原圖最小割,將頂點分為 S 集(可從源點達到)和 T 集(可達匯點)。
  2. 修改/新增邊若兩端點同屬 S 或同屬 T,最小割不變。
  3. 唯有邊從 S 指向 T 時,將其容量設為 INF 可能增大最小割。
  4. 枚舉所有 S→T 可能邊(含原有邊修改與新增邊),每次跑最大流取最大值。

算法流程

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved