Задачі
Мости: остання битва
Мости: остання битва
\textit{А у Вашої дипломної є практичне застосування?}
_____________________________________________________
Популярне питання
\textbf{Легенда}
Хлопчик Сергій вже майже завершив роботу над дипломною роботою. Тема диплому з грудня не змінилась, це усе ще "Dynamic 2-Edge-Connectivity Problem". Алгоритм уже придумано, протестивано, доведено оцінку \textbf{O(K log K)}... Залишилось лише написати розділ про "практичне застосування".
Ну яке може бути практичне застосування у задачі "Dynamic 2-Edge-Connectivity Problem"? Питання непросте. Воно виявилось мало не складнішим поставленої задачі. Але диплом потрібно захистити, тому потрібно терміново щось робити.
Отже, перше практичне застосування: можна запропонувати на змагання задачу на цю тему!
\textbf{Задача}
Задано неорієнтовний граф із не більше ніж \textbf{10^5} вершин. Спочатку граф не містить ребер. Вам потрібно опрацьовувати запити виду \textbf{ADD x y} та \textbf{DEL x y} - додати або видалити ребро з \textbf{x} в \textbf{y}.
У кожен момент часу потрібно знати, \textit{\textbf{скільки у графі мостів}}.
Кратних ребер та петель у жоден момент часу немає.
Якщо поступає команда "видалити ребро", воно у графі точно присутнє.
\textbf{Розв'язання задачі}
Диплом на те він і диплом, что за \textbf{5} годин його так просто не напишеш. Тому Вам дано цілих \textbf{5} підказок:
\begin{enumerate}
\item Додати ребро та видалити ребро - зробити ребро "живим" на деякому проміжку часу.
\item Використовуйте метод "Розділяй і Володарюй".
\item Стискайте компоненти двозв'язності.
\item Навіть коли компоненти двозв'язності вже стиснено, якщо запитів мало, граф усе ще можна сильно зменшити.
\item Існує розв'язок за \textbf{O(K log K)}.
\end{enumerate}
\InputFile
У першому рядку записано цілі числа \textbf{N} та \textbf{K}: кількість вершин та кількість запитів, відповідно (\textbf{1} ≤ \textbf{N}≤ \textbf{10^5}, \textbf{1} ≤ \textbf{K} ≤ \textbf{10^5}).
У наступних \textbf{K} рядках по одному у рядку записано запити. Кожен запит починається словом "\textbf{ADD}" або "\textbf{DEL}" для запиту на додавання чи видалення ребра, відповідно. Після цього слова два цілих числа \textbf{a} та \textbf{b}, які задають ребро. \textbf{1} ≤ \textbf{a}, \textbf{b} ≤ \textbf{N}, \textbf{a} ≠ \textbf{b}.
\OutputFile
Після кожного запиту потрібно вивести одне число - скільки у поточному графі мостів.
Вхідні дані #1
4 8 ADD 1 2 ADD 2 3 ADD 1 3 DEL 2 3 DEL 1 2 ADD 2 4 ADD 1 4 ADD 2 3
Вихідні дані #1
1 2 0 2 1 2 3 0