201482: [AtCoder]ARC148 C - Lights Out on Tree

Memory Limit:1024 MB Time Limit:3 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Score : $500$ points

Problem Statement

We have a rooted tree with $N$ vertices numbered $1$ to $N$. Vertex $1$ is the root, and the parent of vertex $i$ is vertex $P_i$.
There are $N$ coins with heads and tails, one on each vertex.
Additionally, there are $N$ buttons numbered $1$ to $N$. Pressing button $n$ flips all coins on the vertices in the subtree rooted at vertex $n$.

Process $Q$ queries described below.

In the $i$-th query, you are given a vertex set of size $M_i$: $S_i = \lbrace v_{i,1}, v_{i,2},\dots, v_{i,M_i} \rbrace$.
Now, the coins on the vertices in $S_i$ are facing heads-up, and the others are facing tails-up. In order to make all $N$ coins face tails-up by repeatedly choosing a button and pressing it, at least how many button presses are needed? Print the answer, or $-1$ if there is no way to make all the coins face tails-up.

Constraints

  • $2 \leq N \leq 2 \times 10^5$
  • $1 \leq P_i \lt i$
  • $1 \leq Q \leq 2 \times 10^5$
  • $1 \leq M_i$
  • $\displaystyle \sum_{i=1}^Q M_i \leq 2 \times 10^5$
  • $1 \leq v_{i,j} \leq N$
  • $v_{i,1}, v_{i,2},\dots,v_{i,M_i}$ are pairwise different.
  • All values in the input are integers.

Input

The input is given from Standard Input in the following format:

$N$ $Q$
$P_2$ $P_3$ $\dots$ $P_N$
$M_1$ $v_{1,1}$ $v_{1,2}$ $\dots$ $v_{1,M_1}$
$M_2$ $v_{2,1}$ $v_{2,2}$ $\dots$ $v_{2,M_2}$
$\vdots$
$M_Q$ $v_{Q,1}$ $v_{Q,2}$ $\dots$ $v_{Q,M_Q}$

Output

Print $Q$ lines. The $i$-th line should contain the answer to the $i$-th query.


Sample Input 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

Sample Output 1

1
2
1
3
2
3

For the first query, you can satisfy the requirement in one button press, which is the minimum needed, as follows.

  • Press button $1$, flipping the coins on vertices $1,2,3,4,5,6$.

For the second query, you can satisfy the requirement in two button presses, which is the minimum needed, as follows.

  • Press button $4$, flipping the coin on vertex $4$.
  • Press button $2$, flipping the coins on vertex $2,4,5,6$.

Input

题意翻译

**题意:** 给你一颗有根树,每个节点是黑色或白色,初始全为白色。 每次询问给出一个点集 $S$,把点集中的点全部染成黑色,问至少需要翻转多少个节点使整棵树全为白点,无解输出 `-1`。 翻转的定义为:将节点 $u$ 及其子树中所有节点颜色翻转。 **输入:** 第一行 $N$,$Q$ 表示节点数和询问次数; 第二行 $N-1$ 个整数 $P_i$ 表示节点 $i$ 的父节点; 之后 $Q$ 行,每行第一个整数 $M_i$ 表示点集 $S$ 大小,余下 $M_i$ 个整数 $v_{i,j}$ 表示点集 $S$。

加入题单

算法标签: