CF1569B Chess Tournament

题目描述

### 题意翻译 $n$ 个人进行比赛,每场比赛的结果只有输,赢,平局三种情况。 每个玩家对于比赛都有自己的期望,有以下两种类型: 1. 玩家不想输掉任何一场比赛; 2. 玩家想要赢得至少一场比赛。 判断是否存在所有比赛的结果,使得所有玩家都满足他们的期望。 如果有多种可能的结果,输出任意一种即可。 如果没有,输出 No。

输入格式

多组数据。 一个行一个整数 $T$,代表数据组数。 对于每组数据,第一行一个整数 $n$,代表选手的数量。 第二行一个字符串 $s$,长度为 $n$,由 1,2 构成,分别表示当前玩家期望第一种结果,当前玩家期望第二种结果。

输出格式

对于每组数据,如果不存在合法方案,输出 `No`。 否则,输出 `Yes`。并在下一行输出一个 $n\times n$ 的矩阵。 矩阵的第 $i$ 行第 $j$ 列表示 $i,j$ 选手比赛的结果,如果 $i$ 胜利,输出 `+` ,如果 $j$ 胜利,输出 `-`,如果平局,输出 `=`。 当 $i=j$ 时,输出 `X`。

说明/提示

$1\le t \le 200,2\le n \le50$。 译者:@smyslenny