QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 1024 MB Total points: 100
[+5]

# 5020. 举办乘凉州喵,举办乘凉州谢谢喵

Statistics

题目背景

在塔历 545 年,塔国进行了第 510 届国王的选举。

塔国共有 n 个城市,各大城市间共建设了 n1 条道路, 这 n1 条道路将这些城市两两连通,也就是说,塔国的地图可以看作是一棵大小为 n 的树。 程良洲成功当选,这引起了一些地方政权的不满。

于是,在塔历 546 年,塔国爆发了 q 次革命,第 i 次革命是由从 xi 出发到 yi 这一条简单路径上所有的城市联合发起的。

但是,塔国的军队训练有素,对于第 i 次革命,革命军仅仅只是前进了 di 的距离就被镇压了。

作为塔国记录历史的史官,你奉命记录下了这 q 次革命,并被要求统计出,每次革命共影响了多少个城市。

题目描述

给出一棵大小为 n 的树。

定义 xy 表示树上从 xy 的简单路径,树上 x,y 两点的距离 dis(x,y)xy 包含的边数。

定义树上一个点 u 到树上一条简单路径 xy 的距离为 min

q 次询问,第 i 次询问给出三个整数 x_i, y_i, d_i ,满足 1 \leq x_i, y_i \leq n, 0 \leq d_i < n ,你需要求出距离 x_i \rightarrow y_i 小于等于 d_i 的点数。

输入格式

第一行一个整数 n

第二行到第 n 行,每行两个整数 u_i, v_i ,表示树的一条边。

n+1 行一个整数 q

接下来 q 行每行三个整数 x_i, y_i, d_i,描述了一次询问。

输出格式

q 行,每行一个整数,第 i 行表示第 i 个询问的答案。

样例数据

样例输入

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

样例输出

5
1
4

子任务

对于全部的数据,1≤n,q≤2×10^5

  • 子任务 1(7 分):n,q≤5000
  • 子任务 2(8 分):x_i = y_i
  • 子任务 3(23 分):x_i \to y_i 最多只会包含 20 个点。
  • 子任务 4(22 分):d_i \le 20
  • 子任务 5(20 分):n,q \le 5 \times 10^4
  • 子任务 6(20 分):无特殊限制。