QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 256 MB 总分: 100

#18901. Paquete

统计

Para instalar paquetes en el sistema operativo Vinux, Vasya utiliza Vum, el moderno gestor de paquetes.

Cada paquete tiene varias versiones que se pueden instalar. Solo puede instalarse una de las versiones de una aplicación a la vez. Llamemos paquete a una versión concreta de una aplicación concreta. Como ciertas versiones de distintas aplicaciones pueden ser incompatibles entre sí, en Vum existen conflictos. Cada conflicto es un conjunto de paquetes del que se puede instalar como máximo uno. Intentar instalar más de un paquete de una lista de conflicto provoca un fallo del sistema, y Vasya no quiere eso.

Las distintas versiones de una aplicación pueden estar en conflicto o no. Un conflicto puede incluir varias versiones de una aplicación, incluso todas sus versiones.

Como el sistema de descripción de conflictos de Vum es bastante primitivo, cada paquete solo puede figurar en un conflicto.

Vasya quiere instalar $N$ aplicaciones distintas sin que su Vinux falle. Debe elegir sus versiones sin infringir las reglas anteriores, pero los algoritmos exhaustivos de resolución de dependencias de Vum no pueden afrontar esta tarea. Vasya pide ayuda con su gestor de paquetes.

Entrada

La primera línea del archivo de entrada contiene un entero $N$: el número de aplicaciones que Vasya quiere instalar ($1 \le N \le 200$).

Las siguientes $N$ líneas describen las aplicaciones, incluidas sus listas de versiones. La descripción de una aplicación consta de los siguientes campos separados por espacios:

  • nombre de la aplicación: una cadena de letras latinas minúsculas de entre 1 y 10 caracteres;
  • número de versiones: un entero positivo menor o igual que $1\,000$;
  • números de versión: enteros positivos listados en orden ascendente.

Los números de las aplicaciones son menores o iguales que $100\,000$. Todos los nombres de las aplicaciones son distintos.

La siguiente línea contiene el número $K$: el número de conflictos ($0 \le K \le 500$).

Las siguientes $K$ líneas describen los conflictos. La descripción de un conflicto empieza con un entero positivo $T$: el número de paquetes del conflicto. A continuación se listan $T$ paquetes separados por espacios. Para cada paquete se proporciona el nombre de la aplicación seguido del número de versión.

Se garantiza que los paquetes listados en los conflictos nunca se repiten y que todas las versiones aparecen en las descripciones de las aplicaciones.

Salida

Si es imposible instalar las $N$ aplicaciones sin conflictos, la única línea del archivo de salida debe contener la palabra No. Si es posible, la primera línea debe contener la palabra Yes y la segunda debe listar, separados por espacios, los números de versión que deben instalarse para lograrlo.

Las versiones de las $N$ aplicaciones deben imprimirse en el mismo orden en que se describen las aplicaciones en el archivo de entrada. Si hay varias formas posibles de elegir las aplicaciones, imprime cualquiera de ellas.

Ejemplos

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

Salida 1

Yes
2 8 2

Entrada 2

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

Salida 2

No

Nota

El primer ejemplo contiene dos conflictos. El primero impide instalar simultáneamente la tercera versión de vim y la octava versión de nano. El segundo indica que solo se puede instalar uno de los siguientes paquetes —la primera versión de vim, la quinta de nano y la segunda de vim—, o ninguno. Las soluciones correctas son las siguientes:

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

En el segundo ejemplo hay dos aplicaciones, cada una con una sola versión. Sin embargo, el único conflicto prohíbe instalar ambas aplicaciones 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.