Друзья и враги
Ограничения: время – 250ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В Верховном Совете Марса некоторые члены дружат между собой, а некоторые строят друг другу козни.
Предположим, что в Верховном Совете попытаются применить известные правила
"Враг моего врага — мой друг", "Друг моего врага — мой враг",
"Враг моего друга — мой враг", "Друг моего друга — мой друг" и получить получить полные списки прямых и косвенных
друзей и врагов для каждого члена Совета, то удастся ли это сделать без противоречий (попадание одного и того же человека в оба списка)?
При получении списков возможно применений этих правил неограниченное количество раз.
Первая строка ввода содержит одно целое число `N` (`1 <= N <= 100000`) - количество членов Верховного Совета.
Вторая строка ввода содержит одно целое число `K` (`0 <= K <= 100000`) - количество отношений дружбы.
Далее следует `K` строк, содержащих два целых числа от 1 до `N` - номера членов Совета, находящихся в дружеских отношениях.
Следующая строка ввода содержит одно целое число `M` (`0 <= M <= 100000`) - количество отношений вражды.
Далее следует `M` строк, содержащих два целых числа от 1 до `N` - номера членов Совета, находящихся во враждебных отношениях.
Все пары чисел различны, нет пар с совпадающими числами. Отношения дружбы и вражды являются взаимными - если `a` друг `b`, то `b` друг `a`.
Вывести сообщение ``Yes``, если заданные отношения не приводят к противоречиям при применении вышеуказанных правил,
или сообщение ``No``, в противном случае.
```sample Пример ввода 1
7
3
1 2
3 1
5 6
2
2 4
3 4
```
```sample Пример вывода 1
Yes
```
```sample Пример ввода 2
3
0
3
1 2
2 3
3 1
```
```sample Пример вывода 2
No
```