CF990D Graph And Its Complement
题目描述
给定三个数字 $n, a, b$。你需要构造一个无向图的邻接矩阵,使得该图的连通分量数为 $a$,其补图的连通分量数为 $b$。邻接矩阵必须是对称的,且主对角线上的所有数字都为 $0$。
在无向图中,不允许有自环(即从一个顶点到自身的边)。任意一对顶点之间最多只能有一条边。
无向图的邻接矩阵是一个大小为 $n$ 的方阵,仅包含“0”和“1”,其中 $n$ 是图的顶点数,第 $i$ 行和第 $i$ 列对应图的第 $i$ 个顶点。邻接矩阵的第 $(i, j)$ 个单元格为 $1$ 当且仅当第 $i$ 个顶点和第 $j$ 个顶点之间有一条边。
一个连通分量是顶点集合 $X$,使得对于集合中任意两个顶点,都存在至少一条路径将它们连接起来,但如果向 $X$ 中添加任何其他顶点,这个性质就不再成立。
图 $G$ 的补图或反图 $H$ 是在同一组顶点上的图,满足 $H$ 中的两个不同顶点之间有边,当且仅当它们在 $G$ 中没有边。
输入格式
一行输入三个数字 $n, a, b$,$1 \le n \le 1000, 1 \le a, b \le n$,分别表示图的顶点数、所需的连通分量数以及其补图的连通分量数。
输出格式
如果不存在满足条件的图,则输出一行 "NO"(不带引号)。
否则,第一行输出 "YES"(不带引号)。接下来的 $n$ 行,每行输出 $n$ 个数字,第 $i$ 行第 $j$ 个数字为 $1$ 当且仅当在 $G$ 中第 $i$ 个顶点与第 $j$ 个顶点之间有边(否则为 $0$)。注意,矩阵必须是对称的,且主对角线上的所有数字都为 $0$。
如果存在多种满足条件的矩阵,输出任意一种即可。
说明/提示
由 ChatGPT 4.1 翻译