Разрезание графа
Дан неориентированный граф. Над ним в заданном порядке производятся операции следующих двух типов:
cut — разрезать граф, то есть удалить из него ребро;
ask — проверить, лежат ли две вершины графа в одной компоненте связности.
Известно, что после выполнения всех операций типа cut рёбер в графе не осталось. Найдите результат выполнения каждой из операций типа ask.
Входные данные
Первая строка содержит три целых числа, разделённых пробелами — количество вершин графа , количество рёбер и количество операций .
Следующие строк задают рёбра графа; -я из этих строк содержит два числа и — номера концов -го ребра. Вершины нумеруются с единицы; граф не содержит кратных рёбер и петель.
Далее следует строк, описывающих операции. Операция типа cut задаётся строкой "cut u v" , которая означает. что из графа удаляют ребро между вершинами и . Операция типа ask задаётся строкой "ask u v" , которая означает, что необходимо узнать, лежат ли в данный момент вершины и в одной компоненте связности. Гарантируется, что каждое ребро графа встретится в операциях типа cut ровно один раз.
Выходные данные
Для каждой операции ask выведите в отдельной строке слово "YES", если две указанные вершины лежат в одной компоненте связности, и "NO" в противном случае. Порядок ответов должен соответствовать порядку операций ask во входных данных.