#1452. 跑步打卡

跑步打卡

跑步打卡

题目描述

有一张地图,可以看作一一棵包含nn个结点和n1n-1条边的树,每条边连接两个结点,且任意两个结点存在一条路径互相可达。树上结点编号为从11nn的连续正整数。

现在有mm个玩家,第ii个玩家的起点为sis_{i},终点为tit_{i}

在地图上每天都有打卡任务:所有玩家在第00秒同时从自己的起点出发,以每秒跑一条边的速度,不间断地沿着最短路径向着自己的终点跑去,跑到终点后该玩家就算完成了打卡任务。(由于地图是一棵树,所以每个人的路径是唯一的)

每个结点上都有一个观察员。在结点jj的观察员会选择在第wjw_{j}秒观察玩家,一个玩家能被这个观察员观察到当且仅当该玩家在第wjw_{j}秒也正好到达了结点jj。求每个观察员会观察到多少人?

注意:我们认为一个玩家到达自己的终点后该玩家就会结束游戏,他不能等待一段时间后再被观察员观察到。即对于把结点jj作为终点的玩家:若他在第wjw_{j}秒前到达终点,则在结点jj的观察员不能观察到该玩家;若他正好在第wjw_{j}秒到达终点,则在结点jj的观察员可以观察到这个玩家。

输入格式

第一行有两个整数nnmm

接下来n1n-1行每行两个整数uuvv,表示结点uu到结点vv有一条边。

接下来一行nn个整数,其中第jj个整数为wjw_{j}

接下来mm行,每行两个整数sis_{i}tit_{i}

输出格式

输出11nn个整数,第jj个整数表示结点jj的观察员可以观察到多少人。

数据范围与提示

对于所有的数据,保证1si,tin1 \leq s_{i},t_{i} \leq n0wjn0 \leq w_{j} \leq n

测试点编号 n=m=n = m = 约定
1~2 991 所有人的起点等于自己的终点,即si=tis_{i}=t_{i}
3~4 992 wj=0w_{j}=0
5 993
6~8 99994 树退化成一条链,其中1122有边,2233有边,\ldotsn1n-1nn有边
9~12 99995 所有的si=1s_{i}=1
13~16 99996 所有的ti=1t_{i}=1
17~19 99997
20 299998

样例

6 3
2 3
1 2
1 4
4 5
4 6
0 2 5 1 2 3
1 5
1 3
2 6
2 0 0 1 1 1

说明

对于11号点,w1=0w_{1}=0,故只有起点为11号点的玩家才会被观察到,所以玩家11和玩家22被观察到,共有22人被观察到;

对于22号点,没有玩家在第22秒时在此结点,共00人被观察到;

对于33号点,没有玩家在第55秒时在此结点,共00人被观察到;

对于44号点,玩家11被观察到,共11人被观察到;

对于55号点,玩家11被观察到,共11人被观察到;

对于66号点,玩家33被观察到,共11人被观察到。

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