C. 树

内存限制:256 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较

题目描述

给定一棵 n 个节点的有根树,根为节点 1。

每一个节点都有一朵未开放的花,起初任意选择一朵花(只能选择一朵)将其开放,花费 1 的费用。

然后你可以花费 a 将已经开花的节点的父亲节点的花开放,也可以花费 b 将 已经开花的节点的子节点的花开放。

某种情况下,令 k 为当前开放的花的朵数,c 为当前的总花费,求每一个 k 所对应的最小的 c。

输入格式

输入共 n 行。

第一行输入三个正整数 n,a,b。

接下来 n−1 行每行输入两个正整数 w_i ,v_i ,表示树的一条边。

输出格式

输出共 n 行,每行输出一个整数。

第 i 行表示 k=i 时最小的 c。

样例

样例输入1

5 1 2
1 2
2 3
3 4
4 5

样例输出1

1
2
3
4
5

样例输入2

5 2 3
1 2
1 3
2 4
2 5

样例输出2

1
3
5
8
11

数据范围与提示

对于 30% 的数据, 1≤n,a,b≤10

对于另外 30% 的数据, 1≤n≤10^3

对于所有数据, 1≤n≤10^5,1≤a<b≤n^2

样例1解释

这棵树是一条链。

对于 k=1∼n,选取最下方的 5 号节点,往上走 k−1 个节点,每次向上是消耗为 a=1 的费用。

所以对于 k=i,输出 i。

样例2解释

k=1 时,随便选择一个节点,花费为 1。

k=2 时,选择除了一号节点外的任意一个节点,花费为 1,然后选择一个父节点,花费为 2,总花费为 3。

k=3 时,与 k=2 同理。

k=4 时,选择最长的链的同时,需要分出一个枝杈,多花费 3。

k=5时,分出两个枝杈,多花费 6,总答案为 5+6=11。