eolymp
bolt
Try our new interface for solving problems
Məsələlər

Выборы

Выборы

В ближайшее время будут проводиться новые парламентские выборы в Берляндии. Каждая из n политических партий хочет быть избранной в парламент. В Берляндии существует закон, позволяющий избирать только партии, получившие больше чем определенное количество голосов. Таким образом, некоторые из малых партий пытаются использовать разные технологии для сбора необходимого количества голосов.

Первая технология полностью законна. Две или более партии могут идти на выборы вместе, формируя так называемый избирательный блок.

Вторая технология не так легальна. Некоторые партии имеют специфическую информацию о своих противниках. Эти противники не хотят, чтобы эта информация стала общедоступной.

Если несколько партий объединятся в один избирательный блок, их информация также объединяется. Таким образом они становятся более сильными. Тем не менее, противники каждой партии блока знают нечто дискредитирующее про весь блок. Партия или блок могут иметь некоторую "черную" информацию о себе.

Пронумеруем партии натуральными числами от 1 до n. Партиям и блокам разрешено объединяться в новые блоки. Эти блоки будут нумероваться последовательными натуральными числами (n + 1, n + 2, и так далее).

Вам следует написать программу, которая обрабатывает запросы двух разных типов:

  • Запрос 1 a b: существует ли некоторая дискредитирующая информация которой владеет партия или блок a про партию или блок b?

  • Запрос 2 a b означает что следует объединить партию или блок a с партией или блоком b. Новый блок будет обладать информацией и блока a, и блока b. Вся информация, известная некоторым сторонам или блокам про a и b, теперь касается вновь созданного блока.

Входные данные

Первая строка содержит числа n и m (1n100 000, 1m200 000). Каждая из следующих m строк содержит пару целых чисел a и b указывающих на то что группа a обладает некоторыми дискредитирующими знаниями о группе b (1a, bn). Следующая строка содержит число q (1q200 000). Каждая из следующих q строк содержит запрос. Запрос первого типа выглядит как 1 a b. Запрос второго типа выглядит как 2 a b. Вы должны обрабатывать запросы в том порядке, в котором они указаны. Каждая пара a, b ссылается только на существующие партии и блоки. Гарантируется, что a и b различны в любом 2 a b запросе, но они могут быть одинаковы в запросе 1 a b.

Выходные данные

Выведите в отдельной строке YES или NO для каждого запроса первого вида.

Zaman məhdudiyyəti 3 saniyə
Yaddaşı istafadə məhdudiyyəti 128 MiB
Giriş verilənləri #1
4 6
1 2
1 3
3 2
4 4
2 4
1 2
4
1 3 4
2 2 3
1 5 4
1 4 5
Çıxış verilənləri #1
NO
YES
NO
Mənbə 2007 Петрозаводск, Saratov for Karelia with love, Январь 28, Задача A