#YunQian6. Slowly Night

Slowly Night

题目描述

给定一张 nn 个点的无向图 GG。下面我们考虑的序列都是值在 [1,n][1,n] 内的正整数序列。

对于两个长度相同的序列 a,ba,b,认为它们等价,当且仅当 aa 能通过进行若干次以下操作变成 bb

  • 选择一个 1i<a1\le i<|a|,满足 ai,ai+1a_i,a_{i+1} 两个结点在图中有直接连边,然后交换 ai,ai+1a_i,a_{i+1}

称两个序列 a,ba,b可交换的,当且仅当 ababbaba 等价。这里 abab 表示将 bb 直接拼接到 aa 后面得到的序列。

现在给定一个长度为 mm 的序列 aa,你需要求出所有的序列 bb,满足以下三个条件:

  • a,ba,b 可交换
  • 不存在两个序列 c,dc,d,使得 bbcdcd 等价,且 c,dc,d 均和 aa 可交换。
  • 不存在一个序列 bb',使得 bb'bb 等价,且 bb' 的字典序小于 bb

可以证明在本题的约束下,这样的序列个数不超过 nn 个。

对于序列 bb,定义其哈希值 $H(b)=\big(\sum_{i=1}^{|b|}(n+1)^{i-1}b_i\big)\bmod 998244353$。输出所有合法序列的哈希值。

输入格式

equivalence.in 中读入数据。

第一行一个正整数 nn

接下来 n1n-1 行,第 ii 行有 nin-i 个数,每个数是 0 或者 1,第 jj 个数表示图中是否存在边 (i,i+j)(i,i+j)

接下来一行一个正整数 mm

接下来一行 mm 个正整数 a1,,ama_1,\cdots,a_m 表示给出的序列。保证 1ain1\le a_i\le n

输出格式

输出到 equivalence.in 中。

假设共有 kk 个序列符合条件,它们按照字典序排序后分别为 b(1),b(2),,b(k)b^{(1)},b^{(2)},\cdots,b^{(k)}(注意直接排序序列而非排序哈希值),你需要输出 kk 行,分别表示 H(b(1)),H(b(2)),,H(b(k))H(b^{(1)}),H(b^{(2)}),\cdots,H(b^{(k)})

样例 11 输入

3
1 1
0
5
2 1 3 2 3

样例 11 输出

1
14

样例 11 解释

合法的序列 bb 分别是:(1),(2,3)(1),(2,3)

样例 2,3,42,3,4

见下发文件。

测试点约束

对于所有数据,1n200,1m3×1051\le n\le 200,1\le m\le 3\times 10^5

子任务编号 特殊性质 分值 依赖子任务
1 n5,m7n\le 5,m\le 7 88
2 n=2n=2 1212
3 n=3n=3 2020
4 n,m15n,m\le 15 1212 1
5 n15n\le 15 1616 1,4
6 n50,m1000n\le 50,m\le 1000 1212 1,4,5
7 2020 1,2,3,4,5,6

すろーりーないと (feat. 初音ミク)