#arc157e. [arc157_e]XXYX Binary Tree

[arc157_e]XXYX Binary Tree

问题描述

给定一个有 NN 个顶点的根树,顶点编号为 11NN,根是顶点 11。每个顶点 ii(不包括根)的父节点是顶点 PiP_i。每个顶点(包括根)没有孩子或者有两个孩子

判断是否可以在给定的树的每个顶点上写入字符 XY,满足以下条件。

条件: 对于树的每一条边,考虑将从父节点 PiP_i 到子节点 ii 的顺序连接的两个端点上的字符连接起来得到的长度为 2 的字符串。这样得到的 (N1)(N - 1) 个字符串中,

  • 恰好有 AA 个是 XX
  • 恰好有 BB 个是 XY
  • 恰好有 CC 个是 YX
  • 没有一个是 YY

你需要解决 TT 个测试用例。

约束条件

  • T1T \geq 1
  • N1N \geq 1
  • 对于每个输入,所有测试用例中 NN 的总和最多为 10410^4
  • A0A \geq 0
  • B0B \geq 0
  • C0C \geq 0
  • A+B+C=N1A + B + C = N - 1
  • 1Pi<i(2iN)1 \leq P_i < i \quad (2 \leq i \leq N)
  • 每个顶点 k(1kN)k \quad (1 \leq k \leq N) 最多作为父节点 Pi(2iN)P_i \quad (2 \leq i \leq N) 出现 零次或两次

输入

输入使用以下格式从标准输入给出:

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

每个测试用例 casei (1iT)case_i \ (1 \leq i \leq T) 的格式如下:

NN AA BB CC P2P_2 P3P_3 \cdots PNP_N

输出

输出 TT 行。第 ii 行应该包含 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

对于第一个测试用例,如果你按顺序在顶点 1177 上写入 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

XXXYYX 每个都出现了两次,所以满足条件。

对于第二个测试用例,满足条件的一种方式是写入 XYYXXXX

对于第三个测试用例,没有满足条件的方式。