QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 1024 MB مجموع النقاط: 100

#8596. 女士的礼物

الإحصائيات

Lady 收到了一份生日礼物——一个网络。该网络包含 $n$ 个节点,编号从 $1$ 到 $n$。每个节点上都写有一个字母,对于编号为 $i$ 的节点,我们将该字母记为 $s_i$。

节点之间存在一些单向连接。每个节点恰好有一条指向某个节点的单向连接。设编号为 $i$ 的节点的连接指向编号为 $x_i$ 的节点。注意,$x_i$ 可以等于 $i$——在这种情况下,认为从编号为 $i$ 的节点出发的连接指向其自身。

设 $p_{i,0} = i$ 且 $p_{i,k} = p_{x_i, k-1}$。也就是说,$p_{i,k}$ 是将一枚棋子放置在编号为 $i$ 的节点上,并沿着连接移动 $k$ 次后,棋子所在的节点编号。

Lady 创建了一个大小为 $n \times (3 \cdot n)$ 的矩阵 $a$,其中 $a_{i,j} = s_{p_{i, j-1}}$。即矩阵 $a$ 的第 $i$ 行是一个长度为 $3 \cdot n$ 的字母序列,其中第一个字母为 $s_i$,第二个字母为 $s_{x_i}$,第三个字母为 $s_{x_{x_i}}$,以此类推。

Lady 公布了矩阵 $a$ 的部分行,并请求你构建一个符合已知行的网络。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 2 \cdot 10^3$),表示网络中的节点数量。

接下来的 $n$ 行描述了矩阵 $a$。每一行包含 $3 \cdot n$ 个小写拉丁字母,表示矩阵 $a$ 的对应行;如果 Lady 没有公布该行,则该行为一个字符“?”。

保证至少存在一个符合给定条件的网络。

输出格式

第一行输出一个包含 $n$ 个小写拉丁字母的字符串 $s$,表示写在网络节点上的字母。

第二行输出 $n$ 个整数 $x_1, x_2, \dots, x_n$ ($1 \le x_i \le n$),表示从对应节点出发的连接所指向的节点编号。

该网络对应的矩阵必须在 Lady 公布的所有行上与矩阵 $a$ 完全一致。

如果存在多个正确的答案,输出其中任意一个即可。

子任务

设 $q$ 为 Lady 未公布的行数。

我们将网络称为“对与单点集”,如果网络可以拆分为自环节点(即 $x_v = v$)和节点对 $(a, b)$(满足 $x_a = b$ 且 $x_b = a$)。

我们将网络称为“星形集”,如果网络可以拆分为若干个“星”,每个星由一个自环主节点 $v$(即 $x_v = v$)和一组从属节点 $y = \{y_1, y_2, \dots, y_k\}$ 组成,满足 $x_{y_i} = v$(对于 $1 \le i \le k$)。注意,网络中的星可以有不同的大小,也可以仅由一个主节点组成。

我们将网络称为“以 $v$ 为根的树”,如果 $v$ 是一个自环节点(即 $x_v = v$),且对于每个其他节点,都可以通过网络连接到达节点 $v$(即对于每个 $1 \le i \le n$,存在某个 $k$ 使得 $p_{i,k} = v$)。

我们将网络称为“环”,如果从任何节点出发都可以到达任何其他节点(即对于所有 $1 \le i, j \le n$,存在某个 $k$ 使得 $p_{i,k} = j$)。

  1. (10 分): $n \le 5, q = 0$;
  2. (6 分): $n \le 300, q = 0, x_{x_i} = i$ (网络为对与单点集);
  3. (6 分): $n \le 300, q = 0, x_{x_i} = x_i$ (网络为星形集);
  4. (9 分): $n \le 300, q = 0, x_1 = 1$ 且 $x_i < i$ (对于 $2 \le i \le n$,网络为以 $1$ 为根的树);
  5. (9 分): $n \le 300, q = 0$, 对于所有 $1 \le i, j \le n$ 存在某个 $k$ 使得 $p_{i,k} = j$ (网络为环);
  6. (13 分): $n \le 300, q = 0$;
  7. (25 分): $n \le 300$;
  8. (10 分): $n \le 2 \cdot 10^3, q = 0$;
  9. (12 分): 无附加限制。

样例

样例 1

4
abaaaaaaaaaa
baaaaaaaaaaa
aaaaaaaaaaaa
cccccccccccc
abac
2 3 3 4

样例 2

3
axaxaxaxa
xxxxxxxxx
?
axx
3 2 1

说明

在第一个样例中,$x_1 = 2$ 且 $x_2 = 3$,因此 $p_{1,0} = 1, p_{1,1} = 2, p_{1,2} = 3$。由于 $x_3 = 3$,所有 $k \ge 3$ 的 $p_{1,k}$ 也等于 $3$。相应地,第一行的第二个字母为 $s_2$,第三个字母为 $s_3$。

下方展示了样例中的网络。角落里的数字表示节点编号,字母表示写在对应节点上的值,箭头表示单向连接。

第一个样例的网络

第二个样例的网络

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.