11976. Соціальна мережа


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Степан керує SNS "Twidai", яка має \(N\) користувачів пронумерованих від користувача 1 до користувача \(N\). У Twidai користувачі можуть підписуватися на інших користувачів або відмовлятися від них. Операції \(Q\) виконувалися з моменту запуску Twidai. \(i\)-та (\(1≤i≤Q\)) операція представлена трьома цілими числами \(T_i\) ​, \(A_i\) ​ та \(B_i\) ​, значення яких такі:

  • Якщо \(T_i\) ​ =1: це означає, що користувач \(A_i\) ​ стежить за користувачем \(B_i\) ​. Якщо користувач \(A_i\) ​ вже стежить за користувачем \(B_i\) ​ на момент виконання цієї операції, це не вносить жодних змін.

  • Якщо \(T_i\) ​ =2: це означає, що користувач \(A_i\) ​ скасував підписку на користувача \(B_i\) ​. Якщо користувач \(A_i\) ​ не стежить за користувачем \(B_i\) ​ під час цієї операції, це не вносить жодних змін.

  • Якщо \(T_i ​ =3\): це означає, що вас попросять визначити, чи користувачі \(A_i\) ​ та \(B_i\) ​ стежать один за одним. Вам потрібно вивести Yes, якщо користувач \(A_i\) ​ стежить за користувачем \(B_i\) ​, а користувач \(B_i\) ​ стежить за користувачем \(A_i\) ​, і No в іншому випадку.

Коли сервіс був запущений, жоден користувач не стежив за жодним користувачем. Виведіть правильні відповіді для всіх операцій, для яких \(T_i ​ =3\) у порядку зростання \(i\).

Обмеження

  • \(2≤N≤10^9\)
  • \(1≤Q≤2×10^5\)
  • \(T_i ​ =1,2,3 (1≤i≤Q)\)
  • \(1≤A_i ≤N (1≤i≤Q)\)
  • \(1≤B_i ​ ≤N (1≤i≤Q)\)
  • \(A_i ​ \neq B_i ​  (1≤i≤Q)\)
  • Існує таке \(i\) \((1≤i≤Q)\), що \(T_i ​ =3\).
  • Усі значення у вхідних даних є цілими числами.

Формат вхідних даних

Перший рядок містить цілі числа \(N, Q\).

Наступні  \(Q\) рядків містять цілі числа \(T_i, A_i, B_i\).

Формат вихідних даних

У вихідний потік виведіть \(X\) рядків, де \(X\) — кількість \(i\) \((1≤i≤Q)\), для якої \(T_i ​ =3\). \(j\)-й \((1≤j≤X)\) рядок має містити відповідь на \(j\)-ту операцію таку, що \(T_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 має трьох користувачів. Дев'ять операцій є такими.

  • Користувач 1 слідкує за користувачем 2. Жодні інші користувачі не слідкують за ними.
  • Визначте, чи стежать користувачі 1 і 2 один за одним. Користувач 1 стежить за користувачем 2, але користувач 2 не стежить за користувачем 1, тому правильною відповіддю на цю операцію є No.
  • Користувач 2 стежить за користувачем 1.
  • Визначте, чи стежать користувачі 1 і 2 один за одним. Користувач 1 слідкує за користувачем 2, а користувач 2 слідкує за користувачем 1, тому правильною відповіддю на цю операцію є «Yes».
  • Користувач 2 слідкує за користувачем 3.
  • Користувач 3 слідкує за користувачем 2.
  • Визначте, чи стежать користувачі 1 і 3 один за одним. Користувач 1 не слідкує за користувачем 3, а користувач 3 не стежить за користувачем 1, тому правильною відповіддю на цю операцію є No.
  • Користувач 1 скасовує підписку на користувача 2.
  • Визначте, чи стежать користувачі 1 і 2 один за одним. Користувач 2 слідкує за користувачем 1, але користувач 1 не слідкує за користувачем 2, тому 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

Коментарі

Ще немає коментарів.