#5388. D1. 树的定向(简单版)

D1. 树的定向(简单版)

当前没有测试数据。

题目背景

这是问题的简单版本。两个版本的区别在于,本版本对 nn 的约束更低。只有当你解决了所有版本的问题后,才能进行 hack。

题目描述

你曾经有一棵包含 nn 个节点的无向树。为了让这棵树看起来更有趣,你决定为这 n1n-1 条边中的每一条赋予一个任意的方向。

随着时间流逝,你忘记了树的结构。然而,你发现了一张纸条,上面记录了为边赋予方向之后,对于所有满足 1u,vn1\le u,v\le n 的有序对 (u,v)(u,v)uu 是否能够到达 vv^{\text{∗}}

你希望根据纸条上的信息,找出树的结构以及边的方向。请判断是否存在可能的解,并构造一个解。如果有多个解,你只需要找出其中一个即可。

^{\text{∗}}对于一个有向图,我们说 xx 能够到达 yy 当且仅当存在一个节点序列 u1,u2,,uku_1,u_2,\ldots,u_k,使得 u1=x,uk=yu_1=x,u_k=y,并且对于所有 ii22kk,都存在有向边 ui1uiu_{i-1}\rightarrow u_i。特别地,一个节点总是能够到达它自己。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn2n5002\le n\le 500),表示树的节点数量。

接下来 nn 行,每行包含一个字符串 sis_isis_i 的长度为 nn,且仅由 0011 组成。sis_i 的第 jj 个字符为 11 当且仅当在边被赋予方向后,ii 能够到达 jj

保证所有测试用例的 n3n^3 之和不超过 5003500^3

输出格式

对于每个测试用例,如果存在解,输出 Yes\texttt{Yes},否则输出 No\texttt{No}。如果答案是 Yes\texttt{Yes},在接下来的行中输出构造的边的描述。

输出 n1n-1 行,表示有向边。每行包含两个整数 xxyy,表示在边被赋予方向后,存在有向边 xyx\rightarrow y。如果有多个解,输出任意一个即可。

你可以以任意大小写输出答案。例如,字符串 yEs\texttt{yEs}yes\texttt{yes}Yes\texttt{Yes}YES\texttt{YES} 都将被视为肯定回答。

样例 #1

样例输入 #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

提示

对于第一个测试用例,节点 1144 只能到达它们自己,节点 22 可以到达所有节点,节点 33 只能到达节点 1133。构造的边满足这个约束。

对于第二个测试用例,可以证明不存在可能的解。