#arc148c. [arc148_c]Lights Out on Tree

[arc148_c]Lights Out on Tree

题目描述

我们有一棵根为 11,有 NN 个顶点的树。第 ii 个顶点的父节点是 PiP_i
共有 NN 枚硬币,每枚硬币有正面和反面,分别摆放在每个顶点上。
此外,共有 NN 个按钮,编号为 11NN。按下按钮 nn 会翻转以顶点 nn 为根的子树上的所有硬币。

进行 QQ 个查询,具体如下所述。

ii 个查询中,给出了一个大小为 MiM_i 的顶点集合:$S_i = \\lbrace v_{i,1}, v_{i,2},\\dots, v_{i,M_i} \\rbrace$。
现在,顶点集合 SiS_i 上的硬币面朝上,其他顶点上的硬币面朝下。为了通过反复选择按钮并按下它来使这 NN 枚硬币面朝下,至少需要按下多少次按钮?如果无法使所有硬币面朝下,则输出 \-1\-1

约束条件

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Pi<i1 \leq P_i < i
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1Mi1 \leq M_i
  • i=1QMi2×105\displaystyle \sum_{i=1}^Q M_i \leq 2 \times 10^5
  • 1vi,jN1 \leq v_{i,j} \leq N
  • vi,1,vi,2,,vi,Miv_{i,1}, v_{i,2},\dots,v_{i,M_i} 两两不同。
  • 输入中的所有值都是整数。

输入

从标准输入读取输入数据,输入格式如下:

NN QQ P2P_2 P3P_3 \dots PNP_N M1M_1 v1,1v_{1,1} v1,2v_{1,2} \dots v1,M1v_{1,M_1} M2M_2 v2,1v_{2,1} v2,2v_{2,2} \dots v2,M2v_{2,M_2} \vdots MQM_Q vQ,1v_{Q,1} vQ,2v_{Q,2} \dots vQ,MQv_{Q,M_Q}

输出

输出结果。


示例输入1

6 6
1 1 2 2 5
6 1 2 3 4 5 6
3 2 5 6
1 3
3 1 2 3
3 4 5 6
4 2 3 4 5

示例输出1

1
2
1
3
2
3

对于第一个查询,你可以通过按下按钮一次满足需求,这是所需最少次数,具体操作如下:

  • 按下按钮 11,翻转顶点 1,2,3,4,5,61,2,3,4,5,6 上的硬币。

对于第二个查询,你可以通过按下按钮两次满足需求,这是所需最少次数,具体操作如下:

  • 按下按钮 44,翻转顶点 44 上的硬币。
  • 按下按钮 22,翻转顶点 2,4,5,62,4,5,6 上的硬币。