对每个行的连续段以及列的连续段建点,可以发现一个连续段的两个端点是互相可达的,并且可以决策是哪个出边。
一个行连续段的出边是两个确定的列连续段,列连续段同理。枚举 $s$ 的第一步操作为行或者列,则起点是一个行连续段或列连续段。那么一条行走路径对应这张图 $G$ 的一个有向路径。
对 $G$ 的所有 SCC 进行缩点形成 $G'$。考虑对于每个 * 用一个变量 $x_i\in\{0,1\}$ 描述它由行连续段还是列连续段经过,要求选中的每个 * 通过二选一的所有点一定是互相在 $G'$ 可达的,这样可以刻画出一组路径。
考虑选了 $u_x$ 导致另一个 $v_y$ 互不可达,那么 $v$ 必须选 $y\oplus 1$,因此是对所有这类关系建边就是经典的 2-SAT 问题。
时间复杂度 $O(n^2m^2)$。