Олимпиадный тренинг

Задача . C. AND Graph


Дано множество размера \(m\), состоящее из целых неотрицательных чисел от \(0\) до \(2^{n}-1\) включительно. Построим на этих числах неориентированный граф следующим образом: соединим \(x\) и \(y\), если и только если \(x \& y = 0\). Здесь \(\&\) — операция побитового И. Посчитайте количество компонент связности в таком графе.

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

В первой строке записаны два целых числа \(n\) и \(m\) (\(0 \le n \le 22\), \(1 \le m \le 2^{n}\)).

Во второй строке через пробел перечислены \(m\) чисел \(a_1, a_2, \ldots, a_m\) (\(0 \le a_{i} < 2^{n}\)) — элементы множества. Все \(a_{i}\) различны.

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

Выведите одно целое число — количество компонент связности.

Примечание

Граф из первого примера:

Граф из второго примера:


Примеры
Входные данныеВыходные данные
1 2 3
1 2 3
2
2 5 5
5 19 10 20 12
2

time 4000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя