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

Задача . C. Базовая дипломатия


У Алексея есть \(n\) друзей. А ещё Алексей сейчас в отпуске, поэтому у него есть целых \(m\) дней, чтобы поиграть в эту новую популярную кооперативную игру! Поскольку эта игра кооперативная, Алексею нужен один сокомандник в каждый из \(m\) дней.

Каждый день какие-то его друзья свободны и готовы играть в эту игру, а остальные заняты и не могут. Каждый день Алексей должен выбрать одного из свободных друзей и предложить ему поиграть (а тот, разумеется, согласится). Однако если какой-то из друзей будет играть с Алексеем суммарно строго больше \(\left\lceil\dfrac{m}{2}\right\rceil\) раз (округление вверх), то все остальные обидятся. Конечно же, Алексей не хочет никого обижать.

Помогите ему выбрать сокомандников таким образом, чтобы никто не играл с Алексеем суммарно строго больше \(\left\lceil\dfrac{m}{2}\right\rceil\) раз.

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

Во входных данных находятся несколько наборов входных данных. В первой строке находится одно целое число \(t\) (\(1 \le t \le 10\,000\)) — количество наборов входных данных. Далее следуют наборы входных данных.

Первая строка каждого набора входных данных содержит два натуральных числа \(n\) и \(m\) (\(1\leq n, m\leq 100\,000\)) — количество друзей и количество дней, соответственно.

В \(i\)-й из следующих \(m\) строк содержится натуральное число \(k_i\) (\(1\leq k_i\leq n\)), за которым следуют \(k_i\) попарно различных целых чисел \(f_{i1}\), ..., \(f_{ik_i}\) (\(1\leq f_{ij}\leq n\)), разделённых пробелами — свободные друзья в день \(i\).

Гарантируется, что сумма значений \(n\) и сумма значений \(m\) по всем наборам входных данных не превосходят \(100\,000\). Гарантируется, что сумма всех \(k_i\) по всем дням всех наборов входных данных не превосходит \(200\,000\).

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

Выведите ответ для каждого набора входных данных. Если невозможно никого не обидеть, то выведите «NO».

В противном случае в первой строке выведите «YES», а во второй строке выведите \(m\) целых чисел \(c_1\), ..., \(c_m\), разделённых пробелами. Каждое \(c_i\) должно быть номером друга, взятого в команду в \(i\)-й день (соответственно, это должно быть одно из чисел \(f_{ij}\)).

Никакое значение не должно встречаться больше, чем \(\left\lceil\dfrac{m}{2}\right\rceil\) раз. Если есть несколько возможных ответов, выведите любой из них.


Примеры
Входные данныеВыходные данные
1 2
4 6
1 1
2 1 2
3 1 2 3
4 1 2 3 4
2 2 3
1 3
2 2
1 1
1 1
YES
1 2 1 1 2 3 
NO

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

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