「网络流24题」骑士共存问题 最大独立集

在一个 $\text{n} \times \text{n}$ 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入。
计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击。


题目链接

题解

  • 马的位置和马一步可以到达的位置,可以看做两个点集,两个集合互斥,故可以将图黑白染色。
  • 即为求最大独立集,转化为求最小点覆盖即可。
  • 最大独立集=点数-最小点覆盖, 最小点覆盖=最大流
  • 注意每个白点都要和一步到达的黑点染色!!!