Швидкі відповіді
Джо захоплюється комп'ютерними іграми. Зараз він має вирішити головоломку. Перед ним розгорнута велика карта з укріпленими містами. Ворог Джо - дуже сильний і хитрий персонаж, який може з'єднувати та роз'єднувати міста за допомогою своїх команд. Два міста вважаються пов'язаними, якщо вони з'єднані або безпосередньо, або через деяку множину інших міст, які на даний момент також пов'язані між собою. Коли місто відключається, воно стає ізольованим від інших, тобто вся історія його з'єднань видаляється; історія з'єднань між іншими містами залишається незмінною. Кожне з'єднання є двостороннім. Спочатку всі міста ізольовані. Джо потрібно швидко відповідати на запитання, чи пов'язані два міста, відповідно до історії команд персонажа.
Напишіть програму, яка на основі вхідних даних підрахує кількість відповідей "так" і кількість відповідей "ні" на запитання такого типу: чи пов'язані між собою міста town[i]
і town[j]
?
Вхідні дані
Складаються з декількох тестів, кожен з яких представляє окрему карту міст і команд персонажа:
Кількість міст на карті n (n ≤ 10000);
Набір команд такого виду:
a) c town[i] town[j]
, де town[i]
і town[j]
- цілі числа від 1 до no_of_towns. Ця команда означає, що town[i]
і town[j]
з'єднуються.
b) d town[i]
, де town[i]
- ціле число від 1 до no_of_towns. Ця команда означає, що town[i]
від'єднується.
c) q town[i] town[j]
, де town[i]
і town[j]
- цілі числа від 1 до no_of_towns. Ця команда є запитом: чи з'єднані town[i]
з town[j]
?
d) e, що завершує список команд.
Кожна команда розташована в окремому рядку. Команди (a), (b), (c) можуть з'являтися в будь-якому порядку. Зв'язність міст змінюється при надходженні команд типу (a) і (b). Кожна команда типу (c) обробляється відповідно до поточної конфігурації.
Вихідні дані
Виведіть знайдені два числа в одному рядку у вигляді: n[1]
, n[2]
, як показано в прикладі.
Приклад
Наведений приклад відповідає карті з 4 укріплених міст. Персонаж дає 9 команд. Мається в точності n[1]
відповідей так і n[2]
відповідей ні.