#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 と書き込めば条件を満たします.
番目のテストケースについては,どのように書き込んでも条件を満たしません.