#1591. 子树的大小

子树的大小

题目描述

给定一棵 nn 个节点的无根树,节点编号为 1n1 \sim n。对于每个节点 ii,计算其作为根节点时,整棵树的子树大小(即该节点作为根时,其管辖的所有节点数量,包括自身)。

输入格式

第一行包含两个整数 nnrtrt1n1051 \leq n \leq 10^51rtn1 \leq rt \leq n),其中 rtrt 为任意指定的根节点(仅用于构建树结构,不影响最终计算)。
接下来的 n1n-1 行,每行包含两个整数 aabb1a,bn1 \leq a, b \leq n),表示节点 aa 和节点 bb 之间有一条无向边。

输出格式

按节点编号从小到大的顺序,输出 nn 个整数,每个整数表示对应节点作为根时的子树大小,相邻整数之间用空格分隔。

样例

样例输入

6 1  
1 2  
5 2  
2 3  
4 2  
5 6  

样例输出

6 5 1 1 2 1  

样例解析

  • 当节点 11 作为根时,子树包含所有 66 个节点。
  • 当节点 22 作为根时,其父节点为 11,子树包含节点 2,3,4,5,62,3,4,5,6,共 55 个节点。
  • 当节点 33 作为根时,其父节点为 22,子树仅包含自身,共 11 个节点。
  • 其他节点同理,子树大小由其作为根时的层级结构决定。

数据范围与提示

  • 数据范围
    • 30% 的数据:n100n \leq 100
    • 60% 的数据:n1000n \leq 1000
    • 100% 的数据:n105n \leq 10^5