#lCAlydlt60x6305. 天天爱跑步

天天爱跑步

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

小 C 制作了一款游戏《天天爱跑步》。
游戏地图是一棵 nn 个节点、n1n-1 条边的树,节点编号 1n1 \sim n,任意两个节点之间唯一可达。
现在有 mm 个玩家,第 ii 个玩家的起点为 SiS_i,终点为 TiT_i
00 秒所有玩家同时从起点出发,以每秒一条边的速度,沿最短路径向终点匀速跑,到终点后立刻结束游戏。

在每个节点 jj 上都有一个观察员,他会在WjW_j观察该节点。
一个玩家能被节点 jj 的观察员观察到,当且仅当该玩家在第 WjW_j 秒正好到达节点 jj

注意:若一个玩家在WjW_j 秒之前到达终点,则终点观察员不能观察到该玩家;若正好在第 WjW_j 秒到达终点,则可以观察到。

任务是:对每个节点 jj,输出观察员 jj 能观察到的玩家数量。


输入格式

第一行两个整数 n,mn,m,表示树的节点数(也是观察员数)和玩家数。
接下来 n1n-1 行,每行两个整数 U,VU,V,表示 UUVV 之间有一条边。
接下来一行 nn 个整数 W1,W2,,WnW_1,W_2,\dots,W_n,表示节点 jj 的观察员观察时间。
接下来 mm 行,每行两个整数 Si,TiS_i,T_i,表示一个玩家的起点和终点。

输出格式

一行 nn 个整数,第 ii 个整数表示节点 ii 的观察员能观察到的人数。

数据范围

  • 1n,m3×1051 \le n,m \le 3\times 10^5
  • 1Si,Tin1 \le S_i,T_i \le n
  • 0Wjn0 \le W_j \le n

输入样例

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

样例解释

n=6n=6m=3m=3
树的结构:

    3
    |
    2
    |
    1
    |
    4
   / \
  5   6

边:2-3, 1-2, 1-4, 4-5, 4-6。

观察时间 WjW_j
节点 1: 0
节点 2: 2
节点 3: 5
节点 4: 1
节点 5: 2
节点 6: 3

玩家路径

  1. 玩家 1:从 1 到 5,路径:1 → 4 → 5,长度 2,第 0 秒在 1,第 1 秒在 4,第 2 秒在 5。
  2. 玩家 2:从 1 到 3,路径:1 → 2 → 3,长度 2,第 0 秒在 1,第 1 秒在 2,第 2 秒在 3。
  3. 玩家 3:从 2 到 6,路径:2 → 1 → 4 → 6,长度 3,第 0 秒在 2,第 1 秒在 1,第 2 秒在 4,第 3 秒在 6。

计算每个观察员看到的人数

  • 节点 1 (W=0W=0)
    玩家 1 第 0 秒在 1(起点) ✅
    玩家 2 第 0 秒在 1(起点) ✅
    玩家 3 第 1 秒在 1(不是第 0 秒) ❌
    共 2 人 → 输出 2。

  • 节点 2 (W=2W=2)
    玩家 1 第 2 秒在 5 ❌
    玩家 2 第 1 秒在 2 ❌
    玩家 3 第 0 秒在 2 ❌
    共 0 人 → 输出 0。

  • 节点 3 (W=5W=5)
    玩家 2 第 2 秒到 3 ❌(2 ≠ 5)
    其他玩家不到 3
    共 0 人 → 输出 0。

  • 节点 4 (W=1W=1)
    玩家 1 第 1 秒在 4 ✅
    玩家 2 不在 4
    玩家 3 第 2 秒在 4 ❌
    共 1 人 → 输出 1。

  • 节点 5 (W=2W=2)
    玩家 1 第 2 秒在 5 ✅
    其他人不在
    共 1 人 → 输出 1。

  • 节点 6 (W=3W=3)
    玩家 3 第 3 秒在 6 ✅
    其他人不在
    共 1 人 → 输出 1。


最终输出2 0 0 1 1 1