#CF1632E2. 距离树(困难版)

    ID: 6529 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 9.5 上传者: 标签>树结构其他二分查找图结构最短路DFS与类似方法*2700

距离树(困难版)

E2. 距离树(困难版)
每次测试时间限制:2 秒
每次测试内存限制:512 兆字节

本题与前一题的区别仅在于 nn 的取值范围。

树是一个无环连通的无向图。带权树的每条边都有一个权值。两点间的距离是连接它们的路径上权值之和的最小值。

给定一棵 nn 个顶点的带权树,每条边的权值均为 11。记 d(v)d(v) 为顶点 11 与顶点 vv 之间的距离。

f(x)f(x) 为:若你可以在任意两个顶点 aabb1a,bn1 \le a, b \le n)之间临时添加一条权值为 xx 的边(注意:添加后图不再是一棵树),则 max1vnd(v)\max_{1 \le v \le n} d(v) 可能的最小值。

对于每个整数 xx11nn,求出 f(x)f(x)

输入
第一行包含一个整数 tt1t1041 \le t \le 10^4)——测试用例的数量。
每个测试用例的第一行包含一个整数 nn2n31052 \le n \le 3 \cdot 10^5)。
接下来 n1n-1 行,每行包含两个整数 uuvv1u,vn1 \le u, v \le n),表示 uuvv 之间有一条边。保证这些边构成一棵树。
所有测试用例的 nn 之和不超过 31053 \cdot 10^5

输出
对于每个测试用例,在一行中输出 nn 个整数,其中第 xx 个整数等于 f(x)f(x)

示例
输入

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

输出

1 2 2 2 
1 1 
2 2 3 3 3 3 3 

注意

在第一个测试用例中:

  • x=1x = 1 时,我们可以在顶点 1133 之间添加一条边,则 d(1)=0d(1) = 0d(2)=d(3)=d(4)=1d(2) = d(3) = d(4) = 1,所以 f(1)=1f(1) = 1
  • x2x \ge 2 时,无论添加哪条边,都有 d(1)=0d(1) = 0d(2)=d(4)=1d(2) = d(4) = 1d(3)=2d(3) = 2,所以 f(x)=2f(x) = 2