atcoder#ARC157E. [ARC157E] XXYX Binary Tree

[ARC157E] XXYX Binary Tree

题目描述

N N 頂点の根付き木が与えられます. 頂点には 1 1 から N N の相異なる整数の番号が付いており,根は頂点 1 1 です. 根以外の各頂点 i i の親は頂点 Pi P_i であり,根を含む各頂点は,子を持たないか,ちょうど 2 2 個の子を持つかのいずれかです.

与えられた木の各頂点に X, Y のいずれかの文字を書き込んで,以下の条件を満たすことが可能かどうかを判定してください.

条件: 木の各辺に関して,両端点に書き込まれた文字を親 Pi P_i から子 i i に向かう順に並べて得られる長さ 2 2 の文字列を考える. そのような文字列はのべ (N  1) (N\ -\ 1) 個あるが,そのうち

  • ちょうど A A 個が XX
  • ちょうど B B 個が XY
  • ちょうど C C 個が YX であり,
  • YY は存在しない.

T T 個のテストケースが与えられるので,それぞれについて答えてください.

输入格式

入力は以下の形式で標準入力から与えられる.

T T case1 \mathrm{case}_1 case2 \mathrm{case}_2 \vdots caseT \mathrm{case}_T

各テストケース casei (1  i  T) \mathrm{case}_i\ (1\ \leq\ i\ \leq\ T) は以下の形式である.

N N A A B B C C P2 P_2 P3 P_3 \cdots PN P_N

输出格式

T T 行出力せよ. i i 行目には,i i 番目のテストケースについて,条件を満たす文字の書き込み方が存在するなら Yes を,存在しないなら No を出力せよ.

题目大意

给你一棵有根树,根为 11。你需要把每个点标号为 XY 之一,使得对于 n1n-1 个由父亲和儿子顺序组成的长度为 22 的字符串中:

  1. AAXX
  2. BBXY
  3. CCYX
  4. 不存在 YY

保证 A+B+C=n1A+B+C=n-1,而你只需要判断是否有解。

多组数据

3
7 2 2 2
1 1 2 2 3 3
7 0 2 4
1 1 2 2 3 3
7 2 0 4
1 1 2 2 4 4
Yes
Yes
No

提示

制約

  • T  1 T\ \geq\ 1
  • N  1 N\ \geq\ 1
  • 1 1 つの入力に含まれるテストケースについて,N N の総和は 104 10^4 以下である.
  • A  0 A\ \geq\ 0
  • B  0 B\ \geq\ 0
  • C  0 C\ \geq\ 0
  • A + B + C = N  1 A\ +\ B\ +\ C\ =\ N\ -\ 1
  • 1  Pi < i (2  i  N) 1\ \leq\ P_i\ <\ i\ (2\ \leq\ i\ \leq\ N)
  • 各頂点 k (1  k  N) k\ (1\ \leq\ k\ \leq\ N) は親 Pi (2  i  N) P_i\ (2\ \leq\ i\ \leq\ N) として合計 0 0 回または 2 2 現れる.

Sample Explanation 1

1 1 番目のテストケースについて,たとえば頂点 1 1 から 7 7 の順に XXYXYXX と書き込めば, - 辺 (1, 2) (1,\ 2) で得られる文字列は XX, - 辺 (1, 3) (1,\ 3) で得られる文字列は XY, - 辺 (2, 4) (2,\ 4) で得られる文字列は XX, - 辺 (2, 5) (2,\ 5) で得られる文字列は XY, - 辺 (3, 6) (3,\ 6) で得られる文字列は YX, - 辺 (3, 7) (3,\ 7) で得られる文字列は YX, であり,XX, XY, YX がそれぞれ 2 2 個ずつとなって条件を満たします. 2 2 番目のテストケースについて,たとえば XYYXXXX と書き込めば条件を満たします. 3 3 番目のテストケースについては,どのように書き込んでも条件を満たしません.