对每个 k 构造专线图:中转站树上距离 ≥k 的点对连边,求连通分量个数。
设直径两端为 s,t,直径长 D=d(s,t)。任意点 v 的离心率 ecc(v)=max(d(v,s),d(v,t))。
物流公司有 n 个中转站,站间道路构成一棵树。为降低空驶,调度部按距离门槛铺设直达专线:门槛越高,只有相距更远的站点才会被连上。对每个整数 k(1≤k≤n),树上两点 u,v 当且仅当距离 d(u,v)≥k 时连一条无向专线。距离定义为树上唯一简单路径上的边数。请依次给出每个 k 对应专线图的连通分量个数。
约束:中转站个数不超过 200000。
第一行一个整数 n,表示中转站个数。 接下来 n−1 行,每行两个整数 u 和 v,表示树上的一条无向边。 保证 1≤n≤200000,1≤u,v≤n 且 uev,输入构成一棵树。
输出 n 个整数,第 k 个表示参数为 k 时专线图的连通分量个数,相邻整数用空格分隔。
输入
4
1 2
2 3
3 4
输出
1 1 3 4
说明
这是一条长度为 3 的链。直径 D=‘3‘。k\le D时答案为孤立点个数加‘1‘,否则为n$。输出 1 1 3 4。
输入
4
1 2
1 3
1 4
输出
1 2 4 4
说明
这是以 1 为中心的星。直径 $D=2。依次得到连通分量个数 1 2 4 4。
输入
6
2 1
2 3
3 4
4 5
4 6
输出
1 1 2 4 6 6
说明
直径端点为最远两点。按离心率前缀和计算,六个 k 的连通分量个数为 1 1 2 4 6 6。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.