EduBrick

B. Покрыть множество

2500 мс · 256 МБ · всё или ничего

Даны nn элементов и mm наборов, каждый из которых содержит некоторые из них. Выберите наименьшее число наборов так, чтобы каждый элемент попал хотя бы в один выбранный.

Задача о покрытии множества — NP-трудная, и ограничение n≤18n \le 18 прямо говорит, каким должно быть решение.

Формат ввода

В первой строке nn и mm (1≤n≤181 \le n \le 18, 1≤m≤601 \le m \le 60). В каждой из следующих mm строк — сначала kik_i (0≤ki≤n0 \le k_i \le n), затем kik_i различных номеров элементов от 1 до nn.

Формат вывода

Выведите наименьшее число наборов или −1-1, если покрыть все элементы невозможно.

Примеры

ввод
3 2
2 1 2
2 2 3
вывод
2
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.