atcoder#ABC183F. [ABC183F] Confluence

[ABC183F] Confluence

配点 : 600600

問題文

NN 人の生徒が登校しようとしています。生徒 ii はクラス CiC_i に属しています。

各生徒はそれぞれの家から出発したあと、他の生徒と合流を繰り返しながら学校へ向かいます。一度合流した生徒が分かれることはありません。

QQ 個のクエリが与えられるので、順番に処理してください。クエリには 22 種類あり、入力形式とクエリの内容は以下の通りです。

  • 1 a b : 生徒 aa を含む集団と、生徒 bb を含む集団が合流する (既に合流しているときは何も起こらない)
  • 2 x y : クエリの時点で既に生徒 xx と合流している生徒(生徒 xx を含む)のうち、クラス yy に属している生徒の数を求める

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1Ci,a,b,x,yN1 \leq C_i,a,b,x,y \leq N
  • 1 a b のクエリにおいて、aba \neq b
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

NN QQ

C1C_1 \ldots CNC_N

Query1Query_1

\vdots

QueryQQuery_Q

出力

2 x y のクエリに対する答えを、11 行に 11 つずつ、順に出力せよ。

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

33 番目のクエリの時点で、生徒 11 は、生徒 2,52,5 と合流しています。生徒 1,2,51,2,5 のうちクラス 11 に属する生徒は 22 人です。

55 番目のクエリの時点で、生徒 33 は、生徒 44 と合流しています。生徒 3,43,4 のうちクラス 44 に属する生徒は 00 人です。

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

すでに同じ集団に属している生徒に対して、1 a b のクエリが与えられることもあります。

12 9
1 2 3 1 2 3 1 2 3 1 2 3
1 1 2
1 3 4
1 5 6
1 7 8
2 2 1
1 9 10
2 5 6
1 4 8
2 6 1
1
0
0