Jumping Monkey(https://acs.jxnu.edu.cn/problem/GYM103492K)

2022寒假翻译09

有一个树,有n个节点和n−1条边,使所有节点连接起来。每个节点i都有一个不同的权重ai。一只猴子正在树上跳。在一次跳跃中,当且仅当av是从节点u到节点v的最短路径上所有节点中最大的节点时,猴子就可以从节点u跳到节点v。一旦不能到达更多的节点,猴子就会停止跳跃。

对于每个整数k∈[1,n],计算如果猴子从节点k开始,它能到达的最大节点数。

输入:

输入的第一行包含一个整数T(1≤T≤10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数n(1≤n≤10^5),表示节点的数量。

下面n−1行的每一行都包含两个整数u,v(1≤u,v≤n),表示连接节点u和节点v的边,保证输入将形成一棵树。

下一行包含n个不同的整数a1,a2,…,an(1≤ai≤10^9),表示每个节点的权值。

它保证所有测试用例的n和不超过8×10^5。

输出:

对于每个测试用例,输出n行。第k行包含一个整数,表示猴子从节点k开始时的答案。

样例输入:

2
3
1 2
2 3
1 2 3
5
1 2
1 3
2 4
2 5
1 4 2 5 3

样例输出:

3

2

1

4

2

3

1

3

注释:

对于样本的第二种情况,如果猴子从节点1开始,它最多可以到达4个节点,顺序是1→3→2→4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanlangke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值