GOODGAL: Good galaxy Легенда, описанная далее, переформулирована и упрощена переводчиком, чтобы читатель мог лучше понять условие задачи. Оригинальную легенду вы можете прочитать на странице задачи в контесте. Условие: Галактика – это набор планет и некоторых соединений между парами планет. Связи между планетами двунаправленные, никакая планета не может быть соединена сама с собой. Расстояние между парой планет – это количество соединений, через которые нужно пройти по пути из одной планету в другую. Давайте рассмотрим, как формируются хорошие галактики. Изначально галактика состоит из одной планеты. В какой-то момент галактика начинает разрастаться путем копирования самой себя. Каждая планета изначальной галактики соединяется с соответствующей планетой своей копии. Таким образом, галактика, которая имеет P планет и M соединений, разрастается в галактику с 2P планетами и 2M+P соединениями. Этот рисунок показывает, как растет галактика на протяжении двух итераций. Серым цветом обозначены копии галактик, светло-серым цветом - новые соединения. Однако галактики не растут вечно. Почему? Ответ прост: кометы. После того, как галактика начала расти, через галактику может пролететь комета и изменить соединения между планетами по следующему закону: “Две планеты остаются соединенными после появления кометы тогда и только тогда, когда расстояние между планетами равнялось 2 до прилета кометы”. После того как комета пролетела, галактика перестает расти. Исследователи открыли, что каждая из двух идентичных сформированных после появления кометы галактик, является «хорошей галактикой» - пригодной для жизни. На самом деле, сформированные таким образом галактики - единственные хорошие галактики, которые могут существовать. Этот рисунок показывает галактики после прилета кометы на протяжении трех итераций. Красным и синим цветом обозначены эквивалентные хорошие галактики. К сожалению, ничто не длится вечно. Есть много причин, по которым галактика может потерять статус «хорошей»: прилет другой кометы, разрушение или появление планет и так далее. Вам дана галактика с N планетами и M связями. Ваша задача определить является ли эта галактика хорошей. 1 Формат ввода: В первой строке содержится целое число T – количество тестов. Далее следует описание тестов в следующем формате: Первая строка содержит разделенные пробелом целые числа N и M – количество планет и соединений. Планеты пронумерованы от 1 до N. Следующие M строк содержат разделенные пробелом пары целых чисел – номера планет, между которыми есть соединение. Гарантированно, что между двумя планетами не будет двойных соединений. Формат вывода: Для каждого теста выведите одно слово в отдельной строке: “YES”- если галактика «хорошая» или “NO”, если она таковой не является. Оценивание & ограничения: • • • 1≤T≤5 2 ≤ N ≤ 1024 0 ≤ M ≤ 40 000 Подзадачи: • • Подзадача 1 (22 балла): N <= 32 Подзадача 2 (78 баллов): N <= 1024 Примеры тестов: Входные данные: 5 21 12 20 33 12 23 13 46 12 13 14 23 24 34 45 12 13 14 1 23 24 Выходные данные: YES NO NO YES NO Пояснение: В первом тесте галактика эквивалента красной (или синей) галактике на шаге 2 на картинке выше. Во втором тесте галактика подобна галактике из первого теста, но связи были разрушены, значит, галактика уже не является хорошей. В третьем примере галактика не является хорошей, так как не существует хороших галактик с тремя планетами. 1