题解 P1129 【[ZJOI2007]矩阵游戏】
Night_Aurora · · 题解
看到下面都有详细的代码也没什么可解释的,说一下推导过程吧
最终状态是(1,1)(2,2)...(n,n)都有一个点
我们把点看成匹配边的话,就是每行和每列都做到了匹配
换言之就是N个行和N个列都有匹配时,一定能转换成最终状态
所以就如S向每行所对应的点连边,每列所对应的点向T连边
每个1的块就是某行和某列的边
再逆过来转换到初始状态,我们发现交换行本质就是交换S向这两行连的边,所以匹配数不变
同理交换列也是
所以只要按照最初状态建二分图跑最大流,就是可能的最终状态的最大流
当且仅当最大流是N的时候可以转换到最终状态