#ATarc148c. [ARC148C] Lights Out on Tree

[ARC148C] Lights Out on Tree

题目描述

有一棵有 NN 个顶点的有根树,顶点编号为 11NN。顶点 11 是根节点,对于每个 ii (2iN)(2 \leq i \leq N),顶点 ii 的父节点是顶点 PiP_i

每个顶点上放有一枚正反两面的硬币,共 NN 枚。

此外,有 NN 个编号为 11NN 的按钮。按下按钮 nn 时,以 nn 为根的子树内所有顶点上的硬币都会被翻面。

现在需要处理 QQ 个如下描述的查询。

对于第 ii 个查询,给定一个大小为 MiM_i 的顶点集合 Si={vi,1,vi,2,,vi,Mi}S_i = \{ v_{i,1}, v_{i,2}, \dots, v_{i,M_i} \}

此时,SiS_i 中的顶点上的硬币为正面,其余顶点上的硬币为反面。你可以多次选择一个按钮按下,每次操作后所有被影响的硬币都会翻面。请问,最少需要按多少次按钮,才能使所有 NN 枚硬币都变为反面?如果无论如何都无法全部变为反面,请输出 1-1

输入格式

输入按以下格式从标准输入读入。

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}

输出格式

输出 QQ 行,第 ii 行输出第 ii 个查询的答案。

样例 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
2
1
3
2
3

说明/提示

数据范围

  • 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} 互不相同
  • 所有输入均为整数

样例解释 1

对于第 11 个查询,如下操作只需按 11 次按钮即可满足条件,且这是最小次数。

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

对于第 22 个查询,如下操作只需按 22 次按钮即可满足条件,且这是最小次数。

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

由 ChatGPT 4.1 翻译