#abc295g. [abc295_g]Minimum Reachable City

[abc295_g]Minimum Reachable City

题目描述

我们有一个有向图GSG_S,包含NN个顶点,顶点从11NN编号。它有N1N-1条边。第ii条边(1iN11\leq i \leq N-1)从顶点pi (1pii)p_i\ (1\leq p_i \leq i)指向顶点i+1i+1

我们还有另一个有向图GG,包含NN个顶点,顶点从11NN编号。最初,GG等于GSG_S。按照给定的顺序在GG上进行QQ次查询。查询有两种类型,如下所示。

  • 1 u v:将一条从顶点uu指向顶点vv的边添加到GG中。保证满足以下条件。
    • uvu \neq v
    • GSG_S上,通过一些边可以从顶点vv到达顶点uu
  • 2 x:打印从顶点xx通过一些边可以到达的顶点中最小的顶点编号(包括顶点xx)。

约束条件

  • 2N2×1052\leq N \leq 2\times 10^5
  • 1Q2×1051\leq Q \leq 2\times 10^5
  • 1pii1\leq p_i\leq i
  • 对于第一种格式的每个查询:
    • 1u,vN1\leq u,v \leq N
    • uvu \neq v
    • GSG_S上,通过一些边可以从顶点vv到达顶点uu
  • 对于第二种格式的每个查询,1xN1\leq x \leq N
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN p1p_1 p2p_2 \dots pN1p_{N-1} QQ query1\mathrm{query}_1 query2\mathrm{query}_2 \vdots queryQ\mathrm{query}_Q

这里,queryi\mathrm{query}_i表示第ii个查询,可以是以下任一格式之一:

11 uu vv 22 xx

输出

打印qq行,其中qq是第二种格式的查询数量。第ii行(1jq1\leq j \leq q)应该包含第jj个查询的答案,即第二种格式中的查询结果。

示例输入 1

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

示例输出 1

4
2
1
  • 在第一个查询时,只有顶点44可以通过一些边从顶点44到达GG中的其他顶点。
  • 在第三个查询时,顶点22334455可以通过一些边从顶点44到达在GG中的其他顶点。
  • 在第五个查询时,顶点1122334455可以通过一些边从顶点44到达在GG中的其他顶点。

示例输入 2

7
1 1 2 2 3 3
10
2 5
1 5 2
2 5
1 2 1
1 7 1
1 6 3
2 5
2 6
2 1
1 7 1

示例输出 2

5
2
1
1
1