A16866. Tree Orientation (Easy Version)
编程题
普及+/提高
知识点
题目描述
这是该问题的简单版本。不同之处在于本版本中 $n$ 的约束较低。只有在解决了该问题所有版本后,你才能进行 hack。
你曾经有一棵包含 $n$ 个节点的无向树。为了让树看起来更有趣,你决定给每一条 $n-1$ 条边赋予一个任意方向。
随着时间的流逝,你忘记了你树的结构。然而,你发现了一张便条,上面记录了在给每条边指定方向后,对于所有满足 $1 \le u, v \le n$ 的有序对 $(u, v)$,节点 $u$ 是否能够到达节点 $v$。
你希望利用便条上的信息,找出树的结构以及每条边的方向。如果有可行解,请构造一种方案。如果存在多组解,你只需输出其中一种即可。
$^{\text{∗}}$ 对于有向图,如果存在一系列节点 $u_1, u_2, \ldots, u_k$,使得 $u_1 = x, u_k = y$,并且对于每个 $2 \le i \le k$,有有向边 $u_{i-1} \rightarrow u_i$ 存在,则称 $x$ 可以到达 $y$。特别地,节点总是可以到达自身。
你曾经有一棵包含 $n$ 个节点的无向树。为了让树看起来更有趣,你决定给每一条 $n-1$ 条边赋予一个任意方向。
随着时间的流逝,你忘记了你树的结构。然而,你发现了一张便条,上面记录了在给每条边指定方向后,对于所有满足 $1 \le u, v \le n$ 的有序对 $(u, v)$,节点 $u$ 是否能够到达节点 $v$。
你希望利用便条上的信息,找出树的结构以及每条边的方向。如果有可行解,请构造一种方案。如果存在多组解,你只需输出其中一种即可。
$^{\text{∗}}$ 对于有向图,如果存在一系列节点 $u_1, u_2, \ldots, u_k$,使得 $u_1 = x, u_k = y$,并且对于每个 $2 \le i \le k$,有有向边 $u_{i-1} \rightarrow u_i$ 存在,则称 $x$ 可以到达 $y$。特别地,节点总是可以到达自身。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 500$),表示树的节点数。
接下来的 $n$ 行,每一行包含一个字符串 $s_i$。$s_i$ 长度为 $n$,只包含 $0$ 和 $1$。若 $s_i$ 的第 $j$ 个字符为 $1$,表示在所有边定向后,节点 $i$ 能到达节点 $j$。
保证所有测试用例满足 $\sum n^3 \le 500^3$。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 500$),表示树的节点数。
接下来的 $n$ 行,每一行包含一个字符串 $s_i$。$s_i$ 长度为 $n$,只包含 $0$ 和 $1$。若 $s_i$ 的第 $j$ 个字符为 $1$,表示在所有边定向后,节点 $i$ 能到达节点 $j$。
保证所有测试用例满足 $\sum n^3 \le 500^3$。
输出格式
对于每个测试用例,如果存在可行的方案,输出 $\texttt{Yes}$,否则输出 $\texttt{No}$。如果答案是 $\texttt{Yes}$,在随后的 $n-1$ 行中描述你构造的树边。
输出 $n-1$ 行,每行两个整数 $x$ 和 $y$,表示存在一条有向边 $x\rightarrow y$。如果存在多组答案,输出任意一种均可。
可以使用任意大小写输出答案,如 "yEs", "yes", "Yes", "YES" 都被认为是肯定的回答。
输出 $n-1$ 行,每行两个整数 $x$ 和 $y$,表示存在一条有向边 $x\rightarrow y$。如果存在多组答案,输出任意一种均可。
可以使用任意大小写输出答案,如 "yEs", "yes", "Yes", "YES" 都被认为是肯定的回答。
输入输出样例
输入 #1
11 4 1000 1111 1010 0001 4 1111 0111 0010 0111 4 0011 0111 0011 0001 4 1000 0110 0010 1111 4 1000 0110 1010 1111 5 10000 01011 00111 00010 00001 5 10000 11000 10101 10111 00001 5 10000 01101 00100 01110 10001 4 1100 0100 0011 0001 4 1110 0100 0010 0101 3 100 111 101
输出 #1
Yes 2 3 2 4 3 1 No No Yes 2 3 4 1 4 2 No No Yes 2 1 3 1 3 5 4 3 No No Yes 1 2 1 3 4 2 Yes 2 3 3 1
说明/提示
对于第一个测试用例,节点 $1$ 和 $4$ 只能到达自身,节点 $2$ 可以到达所有节点,节点 $3$ 只能到达节点 $1$ 和 $3$。所构造的边满足该约束。
对于第二个测试用例,可以证明不存在可行方案。
对于第二个测试用例,可以证明不存在可行方案。