QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100

#18901. Пакет

Statistics

Для установки пакетов в ОС Vinux Vasya использует Vum, современный менеджер пакетов.

У каждого пакета есть несколько версий, которые можно установить. Одновременно можно установить только одну версию приложения. Назовём конкретную версию конкретного приложения пакетом. Поскольку конкретные версии разных приложений могут быть несовместимы друг с другом, в Vum существуют конфликты. Каждый конфликт — это множество пакетов, из которого можно установить не более одного пакета. Попытка установить несколько пакетов из списка конфликта приводит к сбою системы, а Vasya этого не хочет.

Разные версии любого приложения могут конфликтовать или не конфликтовать. В один конфликт могут входить несколько версий приложения, в том числе все его версии.

Поскольку система описания конфликтов в Vum довольно примитивна, каждый пакет может быть указан только в одном конфликте.

Vasya хочет установить $N$ различных приложений, не вызвав сбой своего Vinux. Он должен выбрать версии приложений, не нарушая указанных выше правил, но переборные алгоритмы разрешения зависимостей в Vum не справляются с этой задачей. Vasya просит помочь с его менеджером пакетов.

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

Первая строка входного файла содержит целое число $N$ — количество приложений, которые Vasya хочет установить ($1 \le N \le 200$).

Следующие $N$ строк содержат описания приложений со списками их версий. Описание приложения состоит из следующих полей, разделённых пробелами:

  • имя приложения — строка из строчных латинских букв длиной от 1 до 10 символов;
  • число версий — положительное целое число, не превосходящее $1\,000$;
  • номера версий — положительные целые числа, перечисленные в порядке возрастания.

Номера приложений не превосходят $100\,000$. Все имена приложений различны.

Следующая строка содержит число $K$ — количество конфликтов ($0 \le K \le 500$).

Следующие $K$ строк описывают конфликты. Описание конфликта начинается с положительного целого числа $T$ — количества пакетов в конфликте. Затем перечислены $T$ пакетов, разделённых пробелами. Для каждого пакета указано имя приложения, а затем номер версии.

Гарантируется, что пакеты, перечисленные в конфликтах, никогда не повторяются и все версии упомянуты в описаниях приложений.

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

Если невозможно установить все $N$ приложений без конфликтов, единственная строка выходного файла должна содержать слово No. Если возможно, первая строка должна содержать слово Yes, а вторая — разделённые пробелами номера версий, которые необходимо для этого установить.

Версии для $N$ приложений нужно вывести в том же порядке, в котором приложения описаны во входном файле. Если существует несколько способов выбора приложений, выведите любой из них.

Примеры

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

3
vim 3 1 2 3
nano 2 5 8
python 2 2 3
2
2 vim 3 nano 8
3 vim 1 nano 5 vim 2

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

Yes
2 8 2

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

2
firefox 1 38
chrome 1 46
1
2 firefox 38 chrome 46

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

No

Примечание

В первом примере два конфликта. Первый запрещает одновременно установить третью версию vim и восьмую версию nano. Второй означает, что можно установить только один из следующих пакетов — первую версию vim, пятую версию nano и вторую версию vim — либо не устанавливать ни одного. Правильные решения следующие:

  • 1 8 2
  • 1 8 3
  • 2 8 2
  • 2 8 3
  • 3 5 2
  • 3 5 3

Во втором примере есть два приложения, у каждого только одна версия. Однако единственный конфликт запрещает установить оба приложения вместе.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.