好路径
题号:NC298843
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

给定一棵包含 n 个节点的有根树,根节点为 1 号节点,每个节点的权值为 0 或者 1。

Bingbong 认为一条简单路径 u\rightarrow v 是好的,当且仅当 u\rightarrow v 简单路径上的节点权值依次拼接后得到的二进制串所代表的十进制值为 x,并且 \text{lca(u,v)=u or lca(u,v)=v}

现在给定 q 次询问,每次给定一个整数 x,你需要回答树中是否存在好路径。

其中 \text{lca(u,v)}: 表示 u,v 两点的最近公共祖先。

输入描述:

第一行两个整数 n,q(1\leqq n,q\leqq 10^5),表示树的节点个数和询问次数。
第二行一个长度为 n 的 01 字符串,表示节点的权值,输入保证仅含 0 和 1。
接下来 n-1 行,每行两个整数 u,v(1\leqq u,v\leqq n,u\neq v),表示当前无向边连接 u,v 两点。
接下来 q 行,每行一个整数 x(0\leq x\leqq 2^{20}),表示询问的整数。

输出描述:

输出包含 q 行,每行一个字符串,若存在以 x 为值的好路径输出 YES,否则输出 NO。
示例1

输入

复制
4 6
0111
1 2
1 3
4 2
0
1
2
3
4
5

输出

复制
YES
YES
YES
YES
NO
NO