eolymp
bolt
Try our new interface for solving problems
Problems

Мосты: последняя битва

Мосты: последняя битва

\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 После каждого запроса нужно вывести одно число - сколько в текущем графе мостов.
Time limit 2 seconds
Memory limit 256 MiB
Input example #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
Output example #1
1
2
0
2
1
2
3
0