Быстрые ответы
Джо любит компьютерные игры. Сейчас он должен решить головоломку. Перед ним лежит огромная карта с укрепленными городами. Враг Джо - очень сильный и хитрый персонаж, который умеет соединять и разъединять города своими командами. Два города называются связанными, если они соединены либо непосредственно, либо через некоторое множество других связанных между собой городов в некоторый момент времени. Когда город отключается, он становится изолированным от других, то есть удаляется вся история его соединений; история соединений между другими городами не изменяется. Каждое соединение является двунаправленным. Изначально все города изолированы. Джо необходимо быстро отвечать, связаны ли два города, в соответствии с историей команд персонажа.
Напишите программу, которая на основе входных данных подсчитает количество ответов "да" и количество ответов "нет" на вопросы следующего вида: связаны ли между собой города 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]
ответов yes и n[2]
ответов no.