luogu#P9216. [入门赛 #11] 写大作业 (Hard Version)

[入门赛 #11] 写大作业 (Hard Version)

题目背景

本题与 Easy Version 的区别在于:输入的是数列而不是字符串,输入输出格式不同,数据规模不同

题目描述

扶苏为了写计算理论大作业已经 3636 小时没有合眼了。

为了能快点睡觉,扶苏找到了 nn 份文献,第 ii 份文献是一数列 aia_i,她打算把这些文献组合起来。

具体来说,一共有两种操作:

  • 1 x y:把文献 axa_x 整体拼接到 aya_y 的后面,然后删除 axa_x
  • 2 x y:查询 axa_xaya_y 是否相似

我们保证在 1 x y 操作出现后,数列 axa_x 不会出现在接下来的任何操作中。这就是说,操作 11 至多有 n1n-1 次。

相似的定义是:对两个数列 axa_xaya_y,如果存在一种重新排列 axa_x 的方法,使得重排后的 axa_xaya_y 相等,则称 axa_xaya_y 相似

例如,假设 a1=1,2a_1 = 1,2, a2=3,4a_2 = 3,4a3=1,2,3,4a_3 = 1,2,3,4,则执行 1 1 2 后,a1a_1 被删除,a2=3,4,1,2a_2 = 3,4,1,2s3=1,2,3,4s_3 = 1,2,3,4;继续执行 2 2 3 后,因为可以把 a2a_2 重排为 1,2,3,41,2,3,4,所以 a2a_2a3a_3 相似。

注意,操作 22 不会对数列做出实际修改。

输入格式

第一行是两个整数,分别表示文献的数量 nn 和操作的数量 qq
接下来 nn 行,每行描述一个数列。第 ii 行描述 aia_i
每行第一个数是 mim_i,表示数列 aia_i 的长度,接下来有 mim_i 个数,描述数列 aia_i
接下来 qq 行,每行三个整数 op,x,yop, x, y,其含义见『题目描述』。

输出格式

为了避免输出过大,请你输出一行一个整数,表示所有答案为两数列相似的询问的操作编号的按位异或和。

操作的编号从 11 开始,两种操作均会令编号增加 11。你可以参考样例解释来理解输出格式。

4 5
2 1 2
2 3 4
4 1 2 3 4
4 1 2 3 3
1 1 2
2 2 3
2 3 4
2 2 4
2 3 2
7

提示

样例解释

共有五次操作,它们的编号和回答情况如下: | 编号 | 操作 | 回答 | | :-: | :-: | :-: | | 11 | 1 1 2 | 不是查询操作| | 22 | 2 2 3 | 相似 | | 33 | 2 3 4 | 不相似 | | 44 | 2 2 4 | 不相似 | | 55 | 2 2 3 | 相似 |

可以看到,回答为两数列相似的询问的操作编号为 2255。它们的按位异或和是 77。故输出为 77

数据规模与约定

对全部的测试点,保证 1n1051 \leq n \leq 10^51q5×1061 \leq q \leq 5 \times 10^61mi1051 \leq m_i \leq 10^5i=1nmi5×105\sum_{i = 1}^n m_i \leq 5 \times 10^5。数列里的元素都是不超过 10910^9 的非负整数。

数据保证数列元素的生成方式是:对一个数列,限定一个该数列元素大小的上界 kk,然后在 [0,k][0, k] 内均匀随机地生成 mim_i 个整数作为数列 aia_i。注意,kk 不一定是 10910^9