atcoder#ABC278C. [ABC278C] FF

[ABC278C] FF

配点 : 300300

問題文

高橋君が運営する SNS「Twidai」にはユーザー 11 からユーザー NN までの NN 人のユーザーがいます。 Twidai では、ユーザーは別のユーザーをフォローすることや、フォローを解除することができます。

Twidai がサービスを開始してから、QQ 回の操作が行われました。 ii 回目 (1iQ)(1\leq i\leq Q) の操作は 33 つの整数 Ti,Ai,BiT _ i, A _ i, B _ i で表され、それぞれ次のような操作を表します。

  • Ti=1T _ i=1 のとき:ユーザー AiA _ i がユーザー BiB _ i をフォローしたことを表す。この操作の時点でユーザー AiA _ i がユーザー BiB _ i をフォローしている場合、ユーザーのフォロー状況に変化はない。
  • Ti=2T _ i=2 のとき:ユーザー AiA _ i がユーザー BiB _ i のフォローを解除したことを表す。この操作の時点でユーザー AiA _ i がユーザー BiB _ i をフォローしていない場合、ユーザーのフォロー状況に変化はない。
  • Ti=3T _ i=3 のとき:ユーザー AiA _ i とユーザー BiB _ i が互いにフォローしているかをチェックすることを表す。この操作の時点でユーザー AiA _ i がユーザー BiB _ i をフォローしており、かつユーザー BiB _ i がユーザー AiA _ i をフォローしているとき、このチェックに対して Yes と答え、そうでないときこのチェックに対して No と答える必要がある。

サービス開始時には、どのユーザーも他のユーザーをフォローしていません。

すべての Ti=3T _ i=3 であるような操作に対して、ii が小さいほうから順番に正しい答えを出力してください。

制約

  • 2N1092 \leq N \leq 10 ^ 9
  • 1Q2×1051 \leq Q \leq 2\times10 ^ 5
  • Ti=1,2,3 (1iQ)T _ i=1,2,3\ (1\leq i\leq Q)
  • 1AiN (1iQ)1 \leq A _ i \leq N\ (1\leq i\leq Q)
  • 1BiN (1iQ)1 \leq B _ i \leq N\ (1\leq i\leq Q)
  • AiBi (1iQ)A _ i\neq B _ i\ (1\leq i\leq Q)
  • Ti=3T _ i=3 となる i (1iQ)i\ (1\leq i\leq Q) が存在する
  • 入力される値はすべて整数

入力

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

NN QQ

T1T _ 1 A1A _ 1 B1B _ 1

T2T _ 2 A2A _ 2 B2B _ 2

\vdots

TQT _ Q AQA _ Q BQB _ Q

出力

Ti=3T _ i=3 であるような i (1iQ)i\ (1\leq i\leq Q) の個数を XX として、XX 行出力せよ。 j (1jX)j\ (1\leq j\leq X) 行目には jj 番目の Ti=3T _ i=3 であるような操作に対する答えを出力せよ。

3 9
1 1 2
3 1 2
1 2 1
3 1 2
1 2 3
1 3 2
3 1 3
2 1 2
3 1 2
No
Yes
No
No

Twidai には 33 人のユーザーがいます。 99 回の操作はそれぞれ次のようになっています。

  • ユーザー 11 がユーザー 22 をフォローします。そのほかにフォローしている/されているユーザーはいません。
  • ユーザー 11 とユーザー 22 が互いにフォローしているかチェックします。ユーザー 11 はユーザー 22 をフォローしていますが、ユーザー 22 はユーザー 11 をフォローしていません。この操作への正しい答えは No です。
  • ユーザー 22 がユーザー 11 をフォローします。
  • ユーザー 11 とユーザー 22 が互いにフォローしているかチェックします。ユーザー 11 はユーザー 22 をフォローしており、ユーザー 22 はユーザー 11 をフォローしています。この操作への正しい答えは Yes です。
  • ユーザー 22 がユーザー 33 をフォローします。
  • ユーザー 33 がユーザー 22 をフォローします。
  • ユーザー 11 とユーザー 33 が互いにフォローしているかチェックします。ユーザー 11 はユーザー 33 をフォローしておらず、ユーザー 33 もユーザー 11 をフォローしていません。この操作への正しい答えは No です。
  • ユーザー 11 がユーザー 22 のフォローを解除します。
  • ユーザー 11 とユーザー 22 が互いにフォローしているかチェックします。ユーザー 22 はユーザー 11 をフォローしていますが、ユーザー 11 はユーザー 22 をフォローしていません。この操作への正しい答えは No です。
2 8
1 1 2
1 2 1
3 1 2
1 1 2
1 1 2
1 1 2
2 1 2
3 1 2
Yes
No

同じユーザーに対して何度もフォロー操作をする場合があります。

10 30
3 1 6
3 5 4
1 6 1
3 1 7
3 8 4
1 1 6
2 4 3
1 6 5
1 5 6
1 1 8
1 8 1
2 3 10
1 7 6
3 5 6
1 6 7
3 6 7
1 9 5
3 8 6
3 3 8
2 6 9
1 7 1
3 10 8
2 9 2
1 10 9
2 6 10
2 6 8
3 1 6
3 1 8
2 8 5
1 9 10
No
No
No
No
Yes
Yes
No
No
No
Yes
Yes