Kotlin Heroes: Episode 2 |
---|
Закончено |
На день рождения Ивану подарили последовательность неотрицательных целых чисел $$$a_1, a_2, \ldots, a_n$$$. Он сразу же заметил, что каждый элемент последовательности $$$a_i$$$ удовлетворяет условию $$$0 \leq a_i \leq 15$$$.
Иван — большой любитель теории графов, поэтому он решил превратить подаренную последовательность в неориентированный граф.
В его графе будет $$$n$$$ вершин, а ребро между вершинами $$$u$$$ и $$$v$$$ будет присутствовать тогда и только тогда, когда двоичные записи чисел $$$a_u$$$ и $$$a_v$$$ отличаются ровно в одном бите (иначе говоря, $$$a_u \oplus a_v = 2^k$$$ для какого-то целого $$$k \geq 0$$$, где $$$\oplus$$$ это операция Побитовое исключающее ИЛИ (XOR)).
Через пару дней случилось страшное — Иван забыл последовательность $$$a$$$, у него остался только построенный граф!
Можете ли вы помочь ему, и восстановить любую такую последовательность $$$a_1, a_2, \ldots, a_n$$$, что граф, построенный по тем же правилам, которыми пользовался Иван, совпадет с его графом?
В первой строке ввода записаны два целых числа $$$n,m$$$ ($$$1 \leq n \leq 500, 0 \leq m \leq \frac{n(n-1)}{2}$$$): количество вершин и ребер в графе Ивана.
В следующих $$$m$$$ строках содержится описание ребер: в $$$i$$$-й строке записаны два целых числа $$$u_i, v_i$$$ ($$$1 \leq u_i, v_i \leq n; u_i \neq v_i$$$), описывающие неориентированное ребро, соединяющее вершины $$$u_i$$$ и $$$v_i$$$.
Гарантируется, что в данном графе нет кратных ребер. Гарантируется, что для заданного графа существует решение.
Выведите $$$n$$$ целых чисел, разделенных пробелами, $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \leq a_i \leq 15$$$).
Выведенные числа должны удовлетворять условию: в графе Ивана ребро между вершинами $$$u$$$ и $$$v$$$ присутствует тогда и только тогда, когда $$$a_u \oplus a_v = 2^k$$$ для какого-то целого $$$k \geq 0$$$.
Гарантируется, что есть хотя бы одно решение. Если возможных решений несколько, вы можете вывести любое из них.
4 4 1 2 2 3 3 4 4 1
0 1 0 1
3 0
0 0 0
Название |
---|