问题 5234 --树链剖分(decomposition)5234: 树链剖分(decomposition)
时间限制: 1 Sec 内存限制: 128 MB
提交: 6 解决: 3
[提交][状态][命题人:]题目描述
你有一棵 n 个节点的树。你能将树划分成若干条链。
一个有根树的树链剖分为将整棵树划分成若干条从一个点到这个点的某个祖先(包括本身)的链,并且这些链没有公共点。如果一条边在某条链上,即这条边的两个端点在同一条链上,那么这条边为重边,否则为轻边。
一个树链剖分的代价为所有点对的路径上轻边的个数之和。这里将 (u,v) 和 (v,u) 当成同一个点对。一个有根树的最优树链剖分为所有方案中代价最小的方式。
对于一棵无根树,你想知道以每个点为根对应的有根树的最优树链剖分的代价。
输入
第一行一个整数 n ,表示树的节点个数。
接下来 n−1 行,每行包含两个正整数,u,v ,表示 u 和 v 在树上有边相连。
输出
输出 n 行,第 i 行表示第 i 个点为根对应的有根树的最优树链剖分的代价。
提示
数据规模
共 10 个测试点。
测试点 1,2,3 满足 n ≤ 15。
测试点 4,5,6 满足 n ≤ 1000。
对于所有数据,满足 1 ≤ n ≤ 10^5。
来源
[提交][状态]