#CYTUS7. 循环交接
循环交接
有 n 道互不相同的工序,编号为 1 至 n。每道工序使用一个或两个资源。两份循环作业表 A、B 都把这 n 道工序各列出一次。
在 A 中选定起点 i,取出一轮工序,得到线性顺序:
A_i, A_{i+1}, …, A_n, A_1, …, A_{i−1}
在 B 中选定起点 j,以同样方式得到另一份线性顺序。
对取出的第一份线性顺序,你可以执行任意多次以下操作:选择两道相邻且使用的资源没有交集的工序,交换它们的位置。线性顺序的首尾不相邻,操作过程中不能重新选择起点。
求有多少个起点对 (i,j),能使第一份线性顺序经过允许的交换后,与第二份线性顺序完全相同。只要 i 或 j 不同,就计为不同的起点对。
输入格式
本题只有一组输入数据。
第一行包含 n、k,表示工序数和资源总数。
接下来 n 行,第 u 行先给出工序 u 使用的资源数量 d_u,再给出 d_u 个资源编号。
接下来一行包含排列 A,最后一行包含排列 B。
输出格式
输出合法起点对的数量,不取模。
数据范围
- 1 ≤ n,k ≤ 200000;
- 1 ≤ d_u ≤ min(2,k);
- 每个资源编号在 [1,k] 内,同一道工序的资源编号互不相同;
- A、B 都是 1 至 n 的排列;允许存在没有被使用的资源。
样例 1
4 2
1 1
1 1
1 2
1 2
1 2 3 4
1 2 3 4
6
说明:除四个 i=j 的起点对外,(1,3)、(3,1) 也合法。例如 1,2,3,4 可以通过允许的相邻交换变成 3,4,1,2。
样例 2
3 3
2 1 2
2 2 3
2 1 3
1 2 3
1 3 2
0
说明:任意两道工序都共用资源,无法进行任何交换。两份表任取起点,得到的顺序也不会相同。
相关
在下列比赛中: