【网络流24题】二分图点权最大独立集(方格取数问题)

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=所有点权和-最小割。

证明是

  其实我认为有最大闭合权图思想,就是说,最小割=简单割,很显然吧。

  将左边的边割去,表示这些黑点不选,右边的边割去,表示这些白点不选,

  那么,最小割保证不连通,所以保证了这些点互不相连。

  所以所以点权和-最小割=最优解。

原文地址:https://www.cnblogs.com/fengzhiyuan/p/7927672.html