atcoder#ARC148C. [ARC148C] Lights Out on Tree

[ARC148C] Lights Out on Tree

配点 : 500500

問題文

頂点に 11 から NN の番号がついた NN 頂点の根付き木があります。頂点 11 が根で、頂点 ii (2iN)(2 \leq i \leq N) の親は頂点 PiP_i です。 表裏のあるコインが NN 枚あります。コインは全ての頂点の上に 11 枚ずつ載っています。 また、11 から NN までの番号がついた NN 個のボタンがあります。ボタン nn を押すと nn を根とする部分木に含まれる頂点に載っている全てのコインが裏返ります。

以下で説明するクエリを QQ 個処理してください。

ii 番目のクエリではサイズ MiM_i の頂点集合 $S_i = \lbrace v_{i,1}, v_{i,2},\dots, v_{i,M_i} \rbrace$ が与えられます。 今、SiS_i に含まれる頂点の上に載っているコインは表を、それ以外のコインは裏を向いています。ボタンを 11 つ選んで押すことを繰り返して、NN 枚のコイン全てを裏向きにするには、最小で何回ボタンを押す必要がありますか?答えを出力してください。ただし、どのようにボタンを押しても NN 枚のコイン全てが裏向きにならない場合は 1-1 を出力してください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • 1Pi<i1 \leq P_i \lt 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}

出力

QQ 行出力せよ。ii 行目には ii 番目のクエリの答えを出力せよ。

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

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 に載っているコインが裏返る。