12048. Мотузки


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

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

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

Є \(N\) мотузок, пронумерованих від 1 до \(N\). Один кінець кожної мотузки пофарбований у червоний колір, а інший — у синій.

Ви збираєтеся виконати \(M\) операцій зв'язування мотузок. У \(i\)-й операції ви зв’язуєте кінець мотузки \(A_i\) ​, пофарбований \(B_i\) ​, з кінцем мотузки \(C_i\) ​, пофарбований \(D_i\) ​, де \(R\) означає червоний колір, а \(B\) означає синій. Для кожної мотузки кінець одного кольору не прив’язується кілька разів.

Знайти кількість груп зв’язаних мотузок, які після всіх операцій утворюють цикли, і кількість тих, які не утворюють.

Тут група з’єднаних мотузок {\(v_0 ​ , v_1 ​ ,…, v_{x−1 ​}\) } утворює цикл, якщо можна переставити елементи \(v\) так, щоб для кожного \(0≤i<x\) мотузка \(v_i\) ​ прив’язана до мотузки \(v_{(i+1) mod x}\) ​ .

Обмеження

  • \(1≤N≤2×10^5\)
  • \(0≤M≤2×10^5\)
  • \(1≤A_i ​,C_i ​ ≤N\)
  • \((A_i ​,B_i ​) \neq (A_j ​,B_j ​)\),\(( C_i ​,D_i ​ ) \neq (C_j ​ ,D_j ​ )\) \((i \neq j)\)
  • \((A_i ​,B_i ​ ) \neq (C_j ​ ,D_j ​ )\)
  • \(N,M,A_i\) ​ і \(C_i\) ​ цілі числа.
  • \(B_i, D_i\) ​ це \(R\) або \(B\)~.

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

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

Наступні  \(M\) рядків містять \(A_i, B_i, C_i, D_i\).

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

У вихідний потік виведіть \(X\) і \(Y\) у такому порядку, розділивши їх пропуском, де \(X\) — кількість груп з’єднаних мотузок, які утворюють цикли, а \(Y\) — кількість тих, які не утворюють циклів.

Приклад вхідних даних

5 3
3 R 5 B
5 R 3 B
4 R 2 B

Приклад вихідних даних

1 2

Існує три групи з’єднаних мотузок: {1}, {2,4} і {3,5}.

Група мотузок {3,5} утворює цикл, а групи {1} і {2,4} — ні.

Отже, X=1 і Y=2.

Приклад вхідних даних

7 0

Приклад вихідних даних

0 7

Приклад вхідних даних

7 6
5 R 3 R
7 R 4 R
4 B 1 R
2 R 3 B
2 B 5 B
1 B 7 B

Приклад вихідних даних

2 1

Коментарі

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