← Home
write a go solution for Description:
This version of the problem differs from the previous one only in the constraint on n.

A tree is a connected undirected graph without cycles. A weighted tree has a weight assigned to each edge. The distance between two vertices is the minimum sum of weights on the path connecting them.

You are given a weighted tree with n vertices, each edge has a weight of 1. Denote d(v) as the distance between vertex 1 and vertex v.

Let f(x) be the minimum possible value of maxlimits_1<=qv<=qnd(v) if you can temporarily add an edge with weight x between any two vertices a and b (1<=a,b<=n). Note that after this operation, the graph is no longer a tree.

For each integer x from 1 to n, find f(x).

Input Format:
The first line contains a single integer t (1<=t<=10^4) — the number of test cases.

The first line of each test case contains a single integer n (2<=n<=3*10^5).

Each of the next nāˆ’1 lines contains two integers u and v (1<=u,v<=n) indicating that there is an edge between vertices u and v. It is guaranteed that the given edges form a tree.

It is guaranteed that the sum of n over all test cases doesn't exceed 3*10^5.

Output Format:
For each test case, print n integers in a single line, x-th of which is equal to f(x) for all x from 1 to n.

Note:
- For x=1, we can an edge between vertices 1 and 3, then d(1)=0 and d(2)=d(3)=d(4)=1, so f(1)=1.
- For x>=2, no matter which edge we add, d(1)=0, d(2)=d(4)=1 and d(3)=2, so f(x)=2.. Output only the code with no comments, explanation, or additional text.