AT_arc157_e [ARC157E] XXYX Binary Tree
Description
[problemUrl]: https://atcoder.jp/contests/arc157/tasks/arc157_e
$ N $ 頂点の根付き木が与えられます. 頂点には $ 1 $ から $ N $ の相異なる整数の番号が付いており,根は頂点 $ 1 $ です. 根以外の各頂点 $ i $ の親は頂点 $ P_i $ であり,根を含む各頂点は,**子を持たないか,ちょうど $ 2 $ 個の子を持つか**のいずれかです.
与えられた木の各頂点に `X`, `Y` のいずれかの文字を書き込んで,以下の条件を満たすことが可能かどうかを判定してください.
**条件:** 木の各辺に関して,両端点に書き込まれた文字を親 $ P_i $ から子 $ i $ に向かう順に並べて得られる長さ $ 2 $ の文字列を考える. そのような文字列はのべ $ (N\ -\ 1) $ 個あるが,そのうち
- ちょうど $ A $ 個が `XX`,
- ちょうど $ B $ 個が `XY`,
- ちょうど $ C $ 個が `YX` であり,
- `YY` は存在しない.
$ T $ 個のテストケースが与えられるので,それぞれについて答えてください.
Input Format
入力は以下の形式で標準入力から与えられる.
> $ T $ $ \mathrm{case}_1 $ $ \mathrm{case}_2 $ $ \vdots $ $ \mathrm{case}_T $
各テストケース $ \mathrm{case}_i\ (1\ \leq\ i\ \leq\ T) $ は以下の形式である.
> $ N $ $ A $ $ B $ $ C $ $ P_2 $ $ P_3 $ $ \cdots $ $ P_N $
Output Format
$ T $ 行出力せよ. $ i $ 行目には,$ i $ 番目のテストケースについて,条件を満たす文字の書き込み方が存在するなら `Yes` を,存在しないなら `No` を出力せよ.
Explanation/Hint
### 制約
- $ T\ \geq\ 1 $
- $ N\ \geq\ 1 $
- $ 1 $ つの入力に含まれるテストケースについて,$ N $ の総和は $ 10^4 $ 以下である.
- $ A\ \geq\ 0 $
- $ B\ \geq\ 0 $
- $ C\ \geq\ 0 $
- $ A\ +\ B\ +\ C\ =\ N\ -\ 1 $
- $ 1\ \leq\ P_i\