#P12457. [UOI 2024] Lady's Gift

[UOI 2024] Lady's Gift

题目描述

在生日那天,女士收到了一份礼物——一个网络。该网络包含 nn 个节点,编号为从 11nn 的整数。每个节点被分配了一个特定的字母,编号为 ii 的节点对应的字母记为 sis_i

某些节点对之间存在单向连接。每个节点恰好有一个出向的单向连接。设编号为 ii 的节点的连接指向编号为 xix_i 的节点。注意 xix_i 可以等于 ii —— 在这种情况下,认为编号为 ii 的节点的连接指向它自身。

定义 pi,0=ip_{i,0} = ipi,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 在所有已知行上完全一致。

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

输入输出样例 #1

输入 #1

4
abaaaaaaaaaa
baaaaaaaaaaa
aaaaaaaaaaaa
cccccccccccc

输出 #1

abac
2 3 3 4

输入输出样例 #2

输入 #2

3
axaxaxaxa
xxxxxxxxx
?

输出 #2

axx
3 2 1

说明/提示

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

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

第一个示例的网络

第二个示例的网络

评分标准

qq 为女士未告知的行数。

我们称一个网络为"成对节点和孤立节点的集合",如果该网络可以被划分为:1) 连接指向自身的节点(即 xv=vx_v = v);2) 成对的节点 (a,b)(a,b) 满足 xa=bx_a=bxb=ax_b=a

我们称一个网络为"星型结构集合",如果该网络可以被划分为若干个独立的"星型结构",每个星型结构包含:1) 一个主节点 vv(满足 xv=vx_v = v);2) 一组从节点 y={y1,y2,,yk}y=\{y_1, y_2, \ldots, y_k\}(满足 xyi=vx_{y_i}=v1ik1 \leq i \leq k 成立)。注意网络中的星型结构可以有不同的尺寸,甚至可以仅包含一个主节点。

我们称一个网络为"以节点 vv 为根的树形结构",如果:1) 节点 vv 的连接指向自身(即 xv=vx_v = v);2) 其他所有节点都能通过网络连接到达节点 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)。

评分细则如下:

  • (10 分):n5n \leq 5q=0q = 0
  • (6 分):n300n \leq 300q=0q = 0,且对所有 1in1\le i\le nxxi=ix_{x_i}=i(网络是成对节点和孤立节点的集合);
  • (6 分):n300n \leq 300q=0q = 0,且对所有 1in1\le i\le nxxi=xix_{x_i}=x_i(网络是星型结构集合);
  • (9 分):n300n \leq 300q=0q = 0,且 x1=1x_1=1,对所有 2in2\le i \le nxi<ix_i<i(网络是以节点 1 为根的树形结构);
  • (9 分):n300n \leq 300q=0q = 0,且对所有 1i,jn1 \leq i,j \leq n 都存在 kk 使得 pi,k=jp_{i,k}=j(网络是环形结构);
  • (13 分):n300n \leq 300q=0q = 0
  • (25 分):n300n \leq 300
  • (10 分):n2103n \leq 2\cdot{10}^3q=0q = 0
  • (12 分):无额外限制。

翻译由 DeepSeek V3 完成