eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Мости: остання битва

Мости: остання битва

\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 Після кожного запиту потрібно вивести одне число - скільки у поточному графі мостів.
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #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