QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 512 MB Points totaux : 100

#12973. 连接岛屿

Statistiques

Bytelandian 的内战已经结束。两个 Bytelandian 岛屿决定联合起来,组成 Bytelandia 联合王国。新政府最关心的问题之一是交通。

战前,每个岛屿都有一个完美的交通网络。在任何一个岛屿上,每座城市都可以通过火车到达其他任何城市。连接是双向的。战争期间,一些铁路线被破坏,因此这些线路上的火车停运了。在任何一个岛屿上,停运的火车不超过 15 列。除了恢复中断的火车线路外,政府还必须建立岛屿间的轮渡连接。轮渡将连接每一对城市 $X$ 和 $Y$,前提是 $X$ 和 $Y$ 不在同一个岛屿上。岛屿间的通勤只能通过火车进行。

在 Bytelandia,一切都是二进制的,包括火车和轮渡的票价。一张票的费用要么是 0,要么是 1 个货币单位。政府决定不对战前未中断的火车线路的票价进行任何更改。它将为所有中断的火车线路和所有轮渡线路分配票价。以身为伟大的数学家而自豪的 Bytelandian 人决定设计票价系统,使得对于任何 3 个不同的城市 $X$、$Y$ 和 $Z$,满足:

$C(X, Y) + C(Y, Z) \geq C(X, Z)$

其中 $C(X, Y)$ 是从 $X$ 到 $Y$ 的票价(如果它们属于同一个岛屿,则通过火车;否则通过轮渡)。

你将获得 Bytelandian 岛屿的描述,你的目标是找出一种票价分配方案(如果可能的话)。

输入格式

你的程序将在一个或多个测试用例上进行测试。输入的第一行是一个整数 $T$,表示测试用例的数量($1 \leq T \leq 100$)。接下来是各个测试用例,每个测试用例描述了两个岛屿(一个接一个)。一个岛屿的描述以一行包含一个整数 $C_k$ 开始,表示该岛屿的城市数量,随后是 $C_k$ 行,每行包含 $C_k$ 个字符($1 \leq C_k \leq 100$)。每一行中的第 $j$ 个字符是该岛屿上从城市 $i$ 到城市 $j$ 的火车票价。字符 'x' 表示它是中断的铁路线之一。每个 $C_k \times C_k$ 的表格保证是对称的(对于不同的 $i$ 和 $j$,有 table[i][j] = table[j][i]),每个表格的对角线均为 '0'(对于不同的 $i$,有 table[i][i] = '0'),此外每个表格包含不超过 30 个 'x'(15 列不同的火车,因为每列火车在表格中会被提到两次)。

注意:输入可能包含位于同一岛屿上的 3 个不同城市,且连接这些城市的火车并未中断,而这 3 个城市不满足上述描述的条件。

输出格式

对于每个测试用例,如果无法完成满足上述条件的票价分配,则输出一行 “NO”(不带引号)。否则,打印 “YES”(不带引号),并在第一行之后跟随 $C_1 + C_2$ 行,每行包含 $C_1 + C_2$ 个字符($C_1$ 是第一个岛屿的城市数量,$C_2$ 是第二个岛屿的城市数量)。第 $i$ 行的第 $j$ 个字符是从城市 $i$ 到城市 $j$ 的票价(如果它们属于同一个岛屿,则通过火车;否则通过轮渡)。在输出中,第一个岛屿的城市编号为 $1$ 到 $C_1$(包含),而第二个岛屿的城市编号为 $C_1 + 1$ 到 $C_1 + C_2$(包含)。如果有多个正确的解决方案,打印其中任何一个。

注意:你不能更改输入中给出的票价,且输出表格必须是对称的。

样例

输入 1

2
3
011
10x
1x0
2
01
10
2
0x
x0
4
010x
1010
0100
x000

输出 1

YES
01111
10111
11011
11101
11110
NO

Figure 1. The sample input provided in the problem description.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.