QOJ.ac

QOJ

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

#18901. Pacote

Statistics

Para instalar pacotes no sistema operacional Vinux, Vasya usa Vum, o moderno gerenciador de pacotes.

Cada pacote tem várias versões que podem ser instaladas. Apenas uma das versões de uma aplicação pode ser instalada por vez. Chamaremos de pacote uma versão específica de uma aplicação específica. Como versões específicas de aplicações diferentes podem ser incompatíveis entre si, existem conflitos no Vum. Cada conflito é um conjunto de pacotes do qual no máximo um pacote pode ser instalado. Tentar instalar mais de um pacote da lista de um conflito causa uma falha do sistema, e Vasya não quer isso.

Versões diferentes de uma aplicação podem entrar em conflito ou não. Um conflito pode conter várias versões de uma aplicação, inclusive todas elas.

Como o sistema de descrição de conflitos do Vum é bastante primitivo, cada pacote só pode ser listado em um conflito.

Vasya quer instalar $N$ aplicações diferentes sem causar uma falha no seu Vinux. Ele deve escolher as versões das aplicações sem violar as regras acima, mas os algoritmos exaustivos de resolução de dependências do Vum não conseguem lidar com essa tarefa. Vasya pede ajuda com seu gerenciador de pacotes.

Entrada

A primeira linha do arquivo de entrada contém um inteiro $N$ — o número de aplicações que Vasya quer instalar ($1 \le N \le 200$).

As próximas $N$ linhas fornecem as descrições das aplicações, incluindo suas listas de versões. A descrição de uma aplicação consiste nos seguintes campos separados por espaços:

  • nome da aplicação — uma cadeia de letras latinas minúsculas com comprimento entre 1 e 10 caracteres;
  • quantidade de versões — um inteiro positivo menor ou igual a $1\,000$;
  • números das versões — inteiros positivos listados em ordem crescente.

Os números das aplicações são menores ou iguais a $100\,000$. Todos os nomes das aplicações são diferentes.

A linha seguinte contém o número $K$ — a quantidade de conflitos ($0 \le K \le 500$).

As próximas $K$ linhas descrevem os conflitos. A descrição de um conflito começa com um inteiro positivo $T$ — a quantidade de pacotes no conflito. Em seguida, são listados $T$ pacotes separados por espaços. Para cada pacote, fornece-se o nome da aplicação seguido do número da versão.

É garantido que os pacotes listados nos conflitos nunca se repetem e que todas as versões são mencionadas nas descrições das aplicações.

Saída

Se for impossível instalar todas as $N$ aplicações sem conflitos, a única linha do arquivo de saída deve conter a palavra No. Se for possível, a primeira linha deve conter a palavra Yes, e a segunda deve listar, separados por espaços, os números das versões que devem ser instaladas para isso.

As versões das $N$ aplicações devem ser impressas na mesma ordem em que as aplicações são descritas no arquivo de entrada. Se houver várias maneiras possíveis de selecionar as aplicações, imprima qualquer uma delas.

Exemplos

Entrada 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

Saída 1

Yes
2 8 2

Entrada 2

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

Saída 2

No

Nota

O primeiro exemplo contém dois conflitos. O primeiro impede instalar simultaneamente a terceira versão do vim e a oitava versão do nano. O segundo diz que apenas um dos seguintes pacotes pode ser instalado — a primeira versão do vim, a quinta do nano e a segunda do vim — ou nenhum. As soluções corretas são as seguintes:

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

No segundo exemplo, existem duas aplicações, cada uma com uma única versão. Porém, o único conflito proíbe instalar ambas as aplicações juntas.

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.