GOODGAL: Good galaxy

advertisement
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
Download