#HK5211. 「UOI 2024 Stage 4 Day1」送给莱蒂的礼物

「UOI 2024 Stage 4 Day1」送给莱蒂的礼物

题目描述

题目译自 Ukrainian Olympiads in Informatics 2024 Stage 4 Day1 T2. Подарунок Леді

在生日当天,莱蒂收到了一份礼物——一个网络。这个网络包含 nn 个节点,编号为从 11nn 的整数。每个节点上写有一个字母,对于编号为 ii 的节点,其字母记为 sis_i

某些节点之间存在单向连接。每个节点恰好有一个单向连接指向另一个节点。设从编号为 ii 的节点出发的连接指向编号为 xix_i 的节点。注意,xix_i 可以等于 ii,即从节点 ii 出发的连接指向它自身。

定义 pi,0=ip_{i,0} = i,且 pi,k=pxi,k1p_{i,k} = p_{x_i,k-1}。也就是说,pi,kp_{i,k} 是将棋子放在编号为 ii 的节点上,并沿连接移动 kk 次后到达的节点编号。

莱蒂创建了一个 n×(3n)n \times (3 \cdot n) 的矩阵 aa,其中 ai,j=spi,j1a_{i,j} = s_{p_{i,j-1}}。也就是说,矩阵 aa 的第 ii 行是长度为 3n3 \cdot n 的字母序列,其第一个字母为 sis_i,第二个字母为 sxis_{x_i},第三个字母为 sxxis_{x_{x_i}},依此类推……

莱蒂提供了矩阵 aa 的某些行,并要求你构建一个符合这些已知行的网络。

输入格式

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

接下来的 nn 行描述矩阵 aa。每行包含 3n3 \cdot n 个小写拉丁字母,表示矩阵 aa 的对应行;或者包含一个字符 ?,表示莱蒂未提供该行信息。

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

输出格式

输出第一行包含一个长度为 nn 的小写拉丁字母字符串 ss,表示网络节点上写着的字母。

输出第二行包含 nn 个整数 x1,x2,,xnx_1, x_2, \ldots, x_n (1xin)(1 \leq x_i \leq n),表示从对应节点出发的连接指向的节点编号。

所构建的网络对应的矩阵必须在莱蒂提供的每一行上与矩阵 aa 一致。

如果存在多个正确答案,可以输出任意一个。

4
abaaaaaaaaaa
baaaaaaaaaaa
aaaaaaaaaaaa
cccccccccccc

abac
2 3 3 4

在第一个样例中,x1=2x_1 = 2x2=3x_2 = 3,因此 p1,0=1,p1,1=2,p1,2=3p_{1,0}=1, p_{1,1}=2, p_{1,2}=3。由于 x3=3x_3=3,对于 k3k \geq 3 的所有 p1,kp_{1,k} 也等于 33。因此,第一个行的第二个字母为 s2s_2,第三个字母为 s3s_3

以下是样例中的网络图示。节点角落中的数字表示节点编号,字母表示节点上写的值,箭头表示单向连接。

3
axaxaxaxa
xxxxxxxxx
?

axx
3 2 1

数据范围与提示

qq 为莱蒂未提供的行数。

定义网络为成对和单节点集合,如果网络可以分解为一些节点(其中 xv=vx_v = v,即连接指向自身)和一些节点对 (a,b)(a, b)(其中 xa=bx_a = bxb=ax_b = a)。

定义网络为星形集合,如果网络可以分解为若干「星形」,每个星形包含一个中心节点 vv(其中 xv=vx_v = v,即连接指向自身)和一组次级节点 y={y1,y2,,yk}y = \{y_1, y_2, \ldots, y_k\}(其中对于 1ik1 \leq i \leq k,有 xyi=vx_{y_i} = v)。注意,星形的规模可以不同,也可以仅包含一个中心节点。

定义网络为以节点 vv 为根的树,如果节点 vv 的连接指向自身(即 xv=vx_v = v),且对于其他所有节点,可以通过网络连接到达节点 vv(即对于每个 1in1 \leq i \leq n,存在 kk 使得 pi,k=vp_{i,k} = v)。

定义网络为循环,如果从任意节点出发,可以通过网络连接到达任意其他节点(即对于所有 1i,jn1 \leq i,j \leq n,存在 kk 使得 pi,k=jp_{i,k} = j)。

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 1010 n5n \leq 5, q=0q = 0
22 66 n300n \leq 300, q=0q = 0, xxi=ix_{x_i}=i(对于 1in1 \le i \le n,网络为成对和单节点集合)
33 66 n300n \leq 300, q=0q = 0, xxi=xix_{x_i}=x_i(对于 1in1 \le i \le n,网络为星形集合)
44 99 n300n \leq 300, q=0q = 0, x1=1x_1=1xi<ix_i < i(对于 2in2 \le i \le n,网络为以节点 11 为根的树)
55 99 n300n \leq 300, q=0q = 0, 对于所有 1i,jn1 \leq i,j \leq n 存在 kk 使得 pi,k=jp_{i,k}=j(网络为循环)
66 1313 n300n \leq 300, q=0q = 0
77 2525 n300n \leq 300
88 1010 n2103n \leq 2 \cdot 10^3, q=0q = 0
99 1212 无附加限制