ARC186A 官方题解-ChatGPT翻译
基于图的重新表述
对于一个元素为0或1的 \(N \times N\) 矩阵 \(A\),考虑从一个完整的二部图构建的有向图。该图的顶点由两部分组成:\((R_1, \dots, R_N)\) 和 \((C_1, \dots, C_N)\),其边的方向如下:
- 如果 \(A_{i,j}=1\),则边从 \(R_i\) 指向 \(C_j\)
- 如果 \(A_{i,j}=0\),则边从 \(C_i\) 指向 \(R_j\)
此外,我们称两个图是相似的,如果对于每个顶点,它们的入度和出度相等。我们说图中的一条边是固定的,如果该边在所有相似图中都存在(且方向相同)。
这样的有向 \(K_{N,N}\) 图和 \(N \times N\) 的矩阵之间存在一一对应关系,矩阵中在第 \(i\) 行第 \(j\) 列的元素固定相当于 \(R_i\) 和 \(C_j\) 之间的边是固定的(不论方向如何)。通过这种有向图的重新表述,我们可以对该图进行分析。
解决方案
考虑两个相似的图,检查在移除所有相同方向的边后剩下的部分。根据相似图的定义,剩下图中每个顶点的入度和出度相等。这意味着剩下的图由若干个循环组成。反过来,对于任何图,如果我们将循环中的所有边方向反转,我们就得到了一个与原图相似的图。
因此,如果一条边是循环的一部分,那么它不是固定的。我们可以使用动态规划来确定以下值的可能组合,总时间复杂度为 \(O(N^6)\)(如果常数因子过大,可以预先计算所有情况并硬编码答案):
- 从 \((R_1, \dots, R_N)\) 中已分配到强连通分量的顶点数量
- 从 \((C_1, \dots, C_N)\) 中已分配到强连通分量的顶点数量
- 包含在强连通分量中的边的数量(即,不是固定的)
请注意,由于图是二部的,在创建强连通分量时,必须至少从 \((R_1, \dots, R_N)\) 和 \((C_1, \dots, C_N)\) 中各选择两个顶点。反之,如果两个部分各有两个或更多的顶点,则总是可以实现强连通性。**