#P16835. [NWRRC 2021资格赛]城市发展

    ID: 16045 传统题 3000ms 512MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>CF2500树链剖分数据结构倍增LCA算法基础模拟

[NWRRC 2021资格赛]城市发展

题目描述

Byteburg 由历史城区新城区组成。

历史城区是一棵由 nn 个广场和 n1n-1 条大道构成的树。广场编号为 1,2,,n1,2,\ldots,n,主广场 11 是这棵树的根。

最初,整座城市只有历史城区。之后每一年,城市按照如下方式扩张。设这一年开始时城市中共有 mm 个广场:

  1. 在历史城区中选择一个广场 ff,再在当前已经建成的所有广场中选择一个广场 tttt 可以位于历史城区,也可以位于新城区)。
  2. 将历史城区中以 ff 为根的整棵子树 TT 完整复制到新城区,并用一条大道把复制出来的子树根与广场 tt 相连。所有新建广场和大道均属于新城区,历史城区本身始终不发生变化。
  3. 设子树 TT 中共有 kk 个广场。新复制出的广场依次获得编号 m+1,m+2,,m+km+1,m+2,\ldots,m+k。编号顺序保持原子树中的编号大小关系:如果 TT 中原广场 i<ji<j,那么它们对应的复制广场 i,ji',j' 也满足 i<ji'<j'

给定历史城区的树形结构,以及连续 yy 年的城市扩张过程。你需要回答若干询问:求最终城市中两个给定广场之间的最短距离。

输入格式

第一行包含三个整数 n,y,qn,y,q,分别表示历史城区中的广场数、扩张年份数和询问数。

1n,y,q105.1\le n,y,q\le 10^5.

接下来 n1n-1 行,每行两个整数 a,ba,b,表示历史城区中广场 aabb 之间有一条大道:

1a,bn,ab.1\le a,b\le n,\qquad a\ne b.

保证这些边构成一棵树,根为编号 11 的主广场。

接下来 yy 行,每行两个整数 f,tf,t,描述对应年份的扩张操作:

  • 1fn1\le f\le n
  • t1t\ge 1
  • tt 不超过该年开始时城市中已有的广场总数。

接下来 qq 行,每行两个整数 i,ji,j,询问广场 ii 与广场 jj 之间的距离。

设经过 yy 年扩张后城市中共有 MM 个广场,则保证:

1i,jM.1\le i,j\le M.

注意:MM 可能远大于 10510^5,甚至无法显式建立最终整棵树。

输出格式

对于每个询问,输出一个整数,表示对应两个广场之间的最短距离。

样例

5 2 4
1 3
1 4
3 2
3 5
3 4
4 2
5 9
1 8
6 3
4 7
3
3
4
1