1. 程式人生 > >【網絡流24題】二分圖點權最大獨立集(方格取數問題)

【網絡流24題】二分圖點權最大獨立集(方格取數問題)

程序 最大獨立集 取數 ron align desc 表示 就是 證明

Description

在一個有m*n 個方格的棋盤中,每個方格中有一個正整數。現要從方格中取數,使任意2 個數所在方格沒有公共邊,且取出的數的總和最大。試設計一個滿足要求的取數算法。

編程任務:
對於給定的方格棋盤,按照取數要求編程找出總和最大的數。

Input

第1 行有2 個正整數m和n,分別表示棋盤的行數和列數。
接下來的m行,每行有n個正整數,表示棋盤方格中的數。

Output

程序運行結束時,將取數的最大總和輸出

Sample Input

3 3
1 2 3
3 2 3
2 3 1

Sample Output

11

就是找一些點,使得互不相連,並且點權和最大。

結論是

  先黑白染色一次。

  S向所有黑點連一條為該權值的邊,所有白點向T連一條為該權值的邊。

  黑點向周圍四個白點連無限流量的邊。

  轉化為了一張圖,ans=所有點權和-最小割。

證明是

  其實我認為有最大閉合權圖思想,就是說,最小割=簡單割,很顯然吧。

  將左邊的邊割去,表示這些黑點不選,右邊的邊割去,表示這些白點不選,

  那麽,最小割保證不連通,所以保證了這些點互不相連。

  所以所以點權和-最小割=最優解。

【網絡流24題】二分圖點權最大獨立集(方格取數問題)