I Wanna Jump the Furthest
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

题目描述

\hspace{15pt}给定一棵有 n 个节点的无向树,节点编号分别为 1n。定义一次 “树上跳点” 操作为:选择一个距离当前点最远的点,并移动过去。如果存在多个满足条件的点,则可以任选一个。
\hspace{15pt}可爱的草莓酱将从 1 号节点出发,进行恰好 k 次 “树上跳点” 操作。
\hspace{15pt}你需要对于每个节点分别求解:在这 k 次操作后,草莓酱是否可能恰好位于该节点上。

【名词解释】
\hspace{15pt}距离:在树中,两个节点之间的距离定义为它们之间最短路径上的边数。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 100\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个整数 n,k\left(2\leq k\leq n\leq 2\times 10^5\right),表示树的节点数、“树上跳点” 操作次数。
\hspace{15pt}此后 n-1 行,第 i 行输入两个整数 u_i,v_i\left(1\leq u_i,v_i\leq n,u_i\neq v_i\right),表示树上第 i 条边连接节点 u_iv_i

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2\times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行输出 n 个整数 a_1,a_2,\dots,a_n \left(0\leq a_i\leq 1\right),其中第 i 个整数 a_i 如果为 0,则表示你认为草莓酱不可能在 k 次操作后恰好位于节点 i;如果为 1,则表示你认为草莓酱可能在 k 次操作后恰好位于节点 i
示例1

输入

复制
4
2 2
2 1
3 3
2 1
3 1
6 3
1 2
2 3
3 4
3 5
3 6
7 7
1 2
2 3
3 4
2 5
5 6
5 7

输出

复制
1 0
0 1 1
0 0 0 1 1 1
0 0 0 1 0 1 1