atcoder#ABC278C. [ABC278C] FF

[ABC278C] FF

题目描述

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

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

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

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

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

输入格式

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

N N Q Q T  1 T\ _\ 1 A  1 A\ _\ 1 B  1 B\ _\ 1 T  2 T\ _\ 2 A  2 A\ _\ 2 B  2 B\ _\ 2 \vdots T  Q T\ _\ Q A  Q A\ _\ Q B  Q B\ _\ Q

输出格式

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

题目大意

【题目翻译】

洛谷是一个大平台,从前,这里有 nn 个用户。刚开始,他们没有任何关系。

qq 次操作,每组操作包含 opiop_iaia_ibib_i

  • opi=1op_i = 1,表示 aia_i 关注了 bib_i
  • opi=2op_i = 2,表示 aia_i 取关了 bib_i
  • opi=3op_i = 3,表示查询 aia_ibib_i 是否互关。

对于每个 opi=3op_i = 3,输出结果。

translated by

https://www.luogu.com.cn/user/367488

【输入格式】

第一行两个数 nnqq

接下来 qq 行,每行三个数 opiop_iaia_ibib_i

【输出格式】

对于每个 opi=3op_i = 3,输出结果。

【数据范围】

1n1091 \le n \le 10^9

1q2×1051 \le q \le 2 \times 10^5

保证 1ai,bin1 \le a_i, b_i \le n,且 aibia_i \ne b_i

保证 opi{1,2,3}op_i \in \{1, 2, 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
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

提示

制約

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

Sample Explanation 1

Twidai には 3 3 人のユーザーがいます。 9 9 回の操作はそれぞれ次のようになっています。 - ユーザー 1 1 がユーザー 2 2 をフォローします。そのほかにフォローしている/されているユーザーはいません。 - ユーザー 1 1 とユーザー 2 2 が互いにフォローしているかチェックします。ユーザー 1 1 はユーザー 2 2 をフォローしていますが、ユーザー 2 2 はユーザー 1 1 をフォローしていません。この操作への正しい答えは No です。 - ユーザー 2 2 がユーザー 1 1 をフォローします。 - ユーザー 1 1 とユーザー 2 2 が互いにフォローしているかチェックします。ユーザー 1 1 はユーザー 2 2 をフォローしており、ユーザー 2 2 はユーザー 1 1 をフォローしています。この操作への正しい答えは Yes です。 - ユーザー 2 2 がユーザー 3 3 をフォローします。 - ユーザー 3 3 がユーザー 2 2 をフォローします。 - ユーザー 1 1 とユーザー 3 3 が互いにフォローしているかチェックします。ユーザー 1 1 はユーザー 3 3 をフォローしておらず、ユーザー 3 3 もユーザー 1 1 をフォローしていません。この操作への正しい答えは No です。 - ユーザー 1 1 がユーザー 2 2 のフォローを解除します。 - ユーザー 1 1 とユーザー 2 2 が互いにフォローしているかチェックします。ユーザー 2 2 はユーザー 1 1 をフォローしていますが、ユーザー 1 1 はユーザー 2 2 をフォローしていません。この操作への正しい答えは No です。

Sample Explanation 2

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