atcoder#ARC157E. [ARC157E] XXYX Binary Tree
[ARC157E] XXYX Binary Tree
配点 : 点
問題文
頂点の根付き木が与えられます. 頂点には から の相異なる整数の番号が付いており,根は頂点 です. 根以外の各頂点 の親は頂点 であり,根を含む各頂点は,子を持たないか,ちょうど 2 個の子を持つかのいずれかです.
与えられた木の各頂点に X
, Y
のいずれかの文字を書き込んで,以下の条件を満たすことが可能かどうかを判定してください.
条件: 木の各辺に関して,両端点に書き込まれた文字を親 から子 に向かう順に並べて得られる長さ の文字列を考える. そのような文字列はのべ 個あるが,そのうち
- ちょうど 個が
XX
, - ちょうど 個が
XY
, - ちょうど 個が
YX
であり, YY
は存在しない.
個のテストケースが与えられるので,それぞれについて答えてください.
制約
- つの入力に含まれるテストケースについて, の総和は 以下である.
- 各頂点 は親 として合計 0 回または 2 回現れる.
入力
入力は以下の形式で標準入力から与えられる.
各テストケース は以下の形式である.
出力
行出力せよ.
行目には, 番目のテストケースについて,条件を満たす文字の書き込み方が存在するなら Yes
を,存在しないなら No
を出力せよ.
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
番目のテストケースについて,たとえば頂点 から の順に XXYXYXX
と書き込めば,
- 辺 で得られる文字列は
XX
, - 辺 で得られる文字列は
XY
, - 辺 で得られる文字列は
XX
, - 辺 で得られる文字列は
XY
, - 辺 で得られる文字列は
YX
, - 辺 で得られる文字列は
YX
,
であり,XX
, XY
, YX
がそれぞれ 個ずつとなって条件を満たします.
番目のテストケースについて,たとえば XYYXXXX
と書き込めば条件を満たします.
番目のテストケースについては,どのように書き込んでも条件を満たしません.