CF1761E Make It Connected
题目描述
给定一个包含 $n$ 个顶点的简单无向图。该图不包含自环,每对顶点之间最多只有一条边。你的任务很简单:使该图变为连通图。
你可以进行如下操作任意次(也可以不进行操作):
- 任意选择一个顶点 $u$。
- 对于图中每一个满足 $v\ne u$ 的顶点 $v$,如果 $v$ 与 $u$ 相邻,则删除 $u$ 与 $v$ 之间的边;否则,添加 $u$ 与 $v$ 之间的边。
请你求出使图变为连通图所需的最少操作次数。同时,输出任意一种长度为最少操作次数的操作序列,使图变为连通图。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 $t$($1\leq t\leq 800$)——表示测试数据的组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含一个整数 $n$($2\leq n\leq 4000$)——表示图中顶点的数量。
接下来有 $n$ 行,每行包含一个长度为 $n$ 的二进制字符串 $s_i$,其中 $s_{i,j}$ 为 '1' 表示顶点 $i$ 与顶点 $j$ 之间有一条边,否则 $s_{i,j}$ 为 '0'。
保证 $s_{i,i}$ 恒为 '0',且 $s_{i,j}=s_{j,i}$,其中 $1\leq i,j\leq n$。
保证所有测试数据中 $n$ 的总和不超过 $4000$。
输出格式
对于每组测试数据,第一行输出一个整数 $m$——表示所需的最少操作次数。
如果 $m$ 大于 $0$,则在下一行输出 $m$ 个整数,表示你在操作中选择的顶点编号。如果有多种最优解,输出任意一种即可。
说明/提示
在第一个测试点中,初始时图已经连通,因此答案为 $0$。
在第二个测试点中,如果对顶点 $1$ 进行一次操作,得到的邻接矩阵如下:
$$
\begin{bmatrix}
0 & 1 & 1 \\
1 & 0 & 1 \\
1 & 1 & 0
\end{bmatrix}
$$
显然,上述图是连通的。
在第三个测试点中,如果依次对顶点 $3$ 和 $4$ 进行操作,得到的邻接矩阵如下:
$$
\begin{bmatrix}
0 & 1 & 1 & 1 \\
1 & 0 & 1 & 1 \\
1 & 1 & 0 & 1 \\
1 & 1 & 1 & 0
\end{bmatrix}
$$
显然,上述图是连通的,并且可以证明,无法通过少于 $2$ 次操作使图连通。
由 ChatGPT 4.1 翻译