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

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

2 секунди
256 мегабайтів
Дуже складна

Чи має ваша дипломна робота практичне застосування?

_____________________________________________________

Популярне запитання

Легенда

Сергій наближається до завершення своєї дипломної роботи. З грудня тема залишається незмінною: "Задача про динамічну двохреберну зв'язність". Алгоритм розроблено, протестовано, і його складність O(K \log K) доведено. Тепер залишилося лише написати розділ про "практичне застосування".

Але яке ж може бути практичне застосування "Задачі про динамічну двохреберну зв'язність"? Це непросте питання — можливо, навіть важче за саму задачу. Проте диплом треба захищати, тому відповідь потрібна терміново.

Тож ось практичне застосування: за цією темою можна скласти задачу для олімпіади!

Задача

Дано неорієнтований граф із кількістю вершин до 10^5. Спочатку граф не містить жодного ребра. Вам потрібно обробити запити виду ADD та DEL — додавання або видалення ребра між вершинами та .

У будь-який момент необхідно визначити, скільки мостів наразі є у графі.

У графі ніколи не буває кратних ребер або петель.

Якщо надходить команда "видалити ребро", гарантовано, що відповідне ребро існує у графі в цей момент.

Підказки

Дипломна робота і називається "дипломною", бо її не можна написати лише за 5 годин. Тож ось 5 підказок:

  1. Додавайте й видаляйте ребра — зробіть ребро "активним" на певному часовому відрізку.

  2. Використайте підхід "Розділяй і володарюй".

  3. Стискуйте двозв'язні компоненти.

  4. Навіть після стискання двозв'язних компонент, якщо кількість запитів невелика, граф ще можна більше спростити.

  5. Існує розв'язок за O(K \log K).

Вхідні дані

У першому рядку два цілих числа і : кількість вершин і кількість запитів відповідно (1 \le N \le 10^5, 1 \le K \le 10^5).

У наступних рядках кожен запит має формат, описаний нижче. Кожен запит починається зі слова ADD або DEL — для додавання чи видалення ребра відповідно. Після цього записано два цілих числа і — кінці ребра (1 \le a, b \le N, a \ne b).

Вихідні дані

Після кожного запиту виведіть одне ціле число — поточну кількість мостів у графі.

Приклади

Приклад 1

Loading
Loading