atcoder#ABC295G. [ABC295G] Minimum Reachable City

[ABC295G] Minimum Reachable City

配点 : 600600

問題文

NN 頂点の有向グラフ GSG_S があり、頂点には 11 から NN までの番号が付けられています。 GSG_S には N1N-1 本の辺があり、ii 本目 (1iN1)(1\leq i \leq N-1) の辺は頂点 pi (1pii)p_i\ (1\leq p_i \leq i) から頂点 i+1i+1 に伸びています。

NN 頂点の有向グラフ GG があり、頂点には 11 から NN までの番号が付けられています。 最初、GGGSG_S と一致しています。 GG に関するクエリが QQ 個与えられるので、与えられた順番に処理してください。クエリは次の 22 種類のいずれかです。

  • 1 u v : GG に頂点 uu から頂点 vv に伸びる辺を追加する。 このとき、以下の条件が満たされることが保証される。- uvu \neq v
    • GSG_S 上で頂点 vv からいくつかの辺を辿ることで頂点 uu に到達可能である
  • uvu \neq v
  • GSG_S 上で頂点 vv からいくつかの辺を辿ることで頂点 uu に到達可能である
  • 2 x : GG 上で頂点 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
  • 11 番目の形式のクエリについて、- 1u,vN1\leq u,v \leq N
    • uvu \neq v
    • GSG_S 上で頂点 vv からいくつかの辺を辿ることで頂点 uu に到達可能である
  • 1u,vN1\leq u,v \leq N
  • uvu \neq v
  • GSG_S 上で頂点 vv からいくつかの辺を辿ることで頂点 uu に到達可能である
  • 22 番目の形式のクエリについて、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}_iii 個目のクエリを表しており、次のいずれかの形式で与えられる。

11 uu vv

22 xx

出力

22 番目の形式のクエリの回数を qq 回として、qq 行出力せよ。 j (1jq)j\ (1\leq j \leq q) 行目には、22 番目の形式のクエリのうち jj 個目のものに対する答えを出力せよ。

5
1 2 3 3
5
2 4
1 4 2
2 4
1 5 1
2 4
4
2
1
  • 11 個目のクエリの時点で、GG 上で頂点 44 からいくつかの辺を辿ることで到達可能な頂点は 44 のみです。
  • 33 個目のクエリの時点で、GG 上で頂点 44 からいくつかの辺を辿ることで到達可能な頂点は 2,3,4,52,3,4, 5 です。
  • 55 個目のクエリの時点で、GG 上で頂点 44 からいくつかの辺を辿ることで到達可能な頂点は 1,2,3,4,51,2,3,4,5 です。
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
5
2
1
1
1