Розрізання графа#3728

Розрізання графа

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

Дано неорієнтований граф. Над ним у заданому порядку виконують операції двох типів:

Відомо, що після виконання всіх операцій типу cut ребер у графі не залишилось. Знайдіть результат виконання кожної з операцій типу ask.

Вхідні дані

Перший рядок містить три цілих числа, відокремлених пробілами — кількість вершин графа , кількість ребер та кількість операцій  (1 \le n \le 50000, 0 \le m \le 10^5, m \le k \le 150000).

Наступні рядків описують ребра графа; -й з цих рядків містить два числа u_i та v_i (1 \le u_i, v_i \le n) — номери кінців -го ребра. Вершини нумеруються з одиниці; граф не містить кратних ребер і петель.

Далі йде рядків, що описують операції. Операція типу cut задається рядком "cut u v" (1 \le u, v \le n), що означає, що з графа видаляють ребро між вершинами та . Операція типу ask задається рядком "ask u v" (1 \le u, v \le n), що означає, що потрібно дізнатися, чи знаходяться на цей момент вершини та в одній компоненті зв'язності. Гарантується, що кожне ребро графа зустрічається в операціях типу cut рівно один раз.

Вихідні дані

Для кожної операції ask виведіть в окремому рядку слово "YES", якщо дві вказані вершини лежать в одній компоненті зв'язності, і "NO" у протилежному випадку. Порядок відповідей повинен відповідати порядку операцій ask у вхідних даних.

Приклади

Приклад 1

Loading
Loading