#P4228. [清华集训 2017] 榕树之心

[清华集训 2017] 榕树之心

Description

一棵榕树可以抽象成一棵nn个结点的有根树,其中结点编号为1n1 \sim n,而11号点就是根节点。初始时,树只有一号点,而心也在一号点。之后每一步,树都会长出一个新结点,即某个和当前已经存在的某个结点相邻的结点被加入了树中,之后,心会沿着心到新加结点的简单路径移动一步。这棵nn个结点的树有很多种生长的顺序,不同的顺序可能会导致最终心的位置不同。现在,Evan和Lyra想知道,哪些结点可能是心在生长过程结束时停留的位置呢?

例如一棵大小为44的树,连边为{<1,2>,<1,3>,<1,4>}\{<1,2>,<1,3>,<1,4>\},我们有三种不同的生长顺序可以让心分别停留在2,3,42,3,4号节点上:

最终停留在22号点:

从1生长出3,心从1移动到3,
从1生长出4,心从3移动回1,
从1生长出2,心从1移动到2.

最终停留在33号点:

从1生长出2,心从1移动到2,
从1生长出4,心从2移动回1,
从1生长出3,心从1移动到3.

最终停留在44号点:

从1生长出2,心从1移动到2,
从1生长出3,心从2移动回1,
从1生长出4,心从1移动到4.

而我们可以证明,不存在任何一种可能的生长顺序使得心停留在11号点。

Input Format

从标准输入读入数据。

输入第一行一个两个正整数W,TW,T,分别表示子任务编号(在样例中W=0W=0)和数据组数,接下来是TT组数据的描述,对于每组数据:

第一行一个正整数nn表示树上结点的个数。

接下来n1n-1行,每行两个正整数ai,bia_i,b_i​​,表示编号ai,bia_i,b_i​​的结点间有一条树边,保证aibia_i \neq b_i并且输入的n1n-1条边恰好构成了一棵树。

Output Format

输出到标准输出。

若输入的WW不等于33,对于每组数据输出一行一个长度为nn0101字符串,表示编号为1n1 \sim n的结点是否有可能是心最后所在的位置,若0101字符串对应位是11则表示可能,为00则表示不可能。

若输入的WW等于33,则对每组数据输出一个字符表示11号点的答案。

0 3
4
1 2
1 3
1 4
6
1 2
1 3
1 4
4 5
5 6
10
1 2
1 3
3 4
3 5
3 6
4 7
7 8
8 9
9 10
0111
000101
0000001010

Hint

TestPoint 1[10pts]

T50;n15T \leq 50; n \leq 15

TestPoint 2[10pts]

T20;n105T \leq 20; n \leq 10^5。除了11号点之外,每个点度数(包括父亲)不超过22

TestPoint 3[10pts]

T200;n100T \leq 200; n \leq 100。只输出一个字符表示11号点答案,即保证11号点答案正确即可。

TestPoint 4[35pts]

T20;n103T \leq 20; n \leq 10^3

TestPoint 5[35pts]

T20;n105T \leq 20; n \leq 10^5