CFCF2208D1.Tree Orientation (Easy Version)
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是该问题的简单版本。不同之处在于本版本中 n 的约束较低。只有在解决了该问题所有版本后,你才能进行 hack。
你曾经有一棵包含 n 个节点的无向树。为了让树看起来更有趣,你决定给每一条 n−1 条边赋予一个任意方向。
随着时间的流逝,你忘记了你树的结构。然而,你发现了一张便条,上面记录了在给每条边指定方向后,对于所有满足 1≤u,v≤n 的有序对 (u,v),节点 u 是否能够到达节点 v。
你希望利用便条上的信息,找出树的结构以及每条边的方向。如果有可行解,请构造一种方案。如果存在多组解,你只需输出其中一种即可。
∗ 对于有向图,如果存在一系列节点 u1,u2,…,uk,使得 u1=x,uk=y,并且对于每个 2≤i≤k,有有向边 ui−1→ui 存在,则称 x 可以到达 y。特别地,节点总是可以到达自身。
输入格式
每个测试点包含多个测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(2≤n≤500),表示树的节点数。
接下来的 n 行,每一行包含一个字符串 si。si 长度为 n,只包含 0 和 1。若 si 的第 j 个字符为 1,表示在所有边定向后,节点 i 能到达节点 j。
保证所有测试用例满足 ∑n3≤5003。
输出格式
对于每个测试用例,如果存在可行的方案,输出 Yes,否则输出 No。如果答案是 Yes,在随后的 n−1 行中描述你构造的树边。
输出 n−1 行,每行两个整数 x 和 y,表示存在一条有向边 x→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。所构造的边满足该约束。
对于第二个测试用例,可以证明不存在可行方案。