QOJ.ac

QOJ

시간 제한: 2.0 s 메모리 제한: 256 MB 총점: 100

#18901. Paket

통계

Um Pakete im Betriebssystem Vinux zu installieren, verwendet Vasya Vum, den modernen Paketmanager.

Jedes Paket hat mehrere installierbare Versionen. Von einer Anwendung kann jeweils nur eine Version installiert werden. Eine bestimmte Version einer bestimmten Anwendung nennen wir ein Paket. Da bestimmte Versionen verschiedener Anwendungen miteinander inkompatibel sein können, gibt es in Vum Konflikte. Jeder Konflikt ist eine Menge von Paketen, aus der höchstens ein Paket installiert werden darf. Der Versuch, mehr als ein Paket aus einer Konfliktliste zu installieren, führt zu einem Absturz, und das möchte Vasya nicht.

Verschiedene Versionen einer Anwendung können miteinander in Konflikt stehen oder auch nicht. Ein Konflikt kann mehrere Versionen einer Anwendung enthalten, einschließlich aller ihrer Versionen.

Da das System zur Beschreibung von Konflikten in Vum recht einfach ist, kann jedes Paket nur in einem Konflikt aufgeführt werden.

Vasya möchte $N$ verschiedene Anwendungen installieren, ohne sein Vinux zum Absturz zu bringen. Er muss die Anwendungsversionen auswählen, ohne die obigen Regeln zu verletzen, aber die erschöpfenden Algorithmen von Vum zur Auflösung von Abhängigkeiten können diese Aufgabe nicht bewältigen. Vasya bittet um Hilfe mit seinem Paketmanager.

Eingabe

Die erste Zeile der Eingabedatei enthält eine ganze Zahl $N$ — die Anzahl der Anwendungen, die Vasya installieren möchte ($1 \le N \le 200$).

Die folgenden $N$ Zeilen beschreiben die Anwendungen einschließlich ihrer Versionslisten. Eine Anwendungsbeschreibung besteht aus den folgenden durch Leerzeichen getrennten Feldern:

  • Anwendungsname — eine Zeichenkette aus lateinischen Kleinbuchstaben mit einer Länge von 1 bis 10 Zeichen;
  • Anzahl der Versionen — eine positive ganze Zahl kleiner oder gleich $1\,000$;
  • Versionsnummern — positive ganze Zahlen in aufsteigender Reihenfolge.

Die Nummern der Anwendungen sind kleiner oder gleich $100\,000$. Alle Anwendungsnamen sind verschieden.

Die nächste Zeile enthält die Zahl $K$ — die Anzahl der Konflikte ($0 \le K \le 500$).

Die folgenden $K$ Zeilen beschreiben die Konflikte. Eine Konfliktbeschreibung beginnt mit einer positiven ganzen Zahl $T$ — der Anzahl der Pakete im Konflikt. Danach werden $T$ durch Leerzeichen getrennte Pakete aufgeführt. Für jedes Paket wird der Anwendungsname angegeben, gefolgt von der Versionsnummer.

Es wird garantiert, dass sich die in den Konflikten aufgeführten Pakete niemals wiederholen und dass alle Versionen in den Anwendungsbeschreibungen vorkommen.

Ausgabe

Falls es unmöglich ist, alle $N$ Anwendungen ohne Konflikte zu installieren, muss die einzige Zeile der Ausgabedatei das Wort No enthalten. Falls es möglich ist, muss die erste Zeile das Wort Yes enthalten, und die zweite Zeile muss die dafür zu installierenden Versionsnummern durch Leerzeichen getrennt auflisten.

Die Versionen für die $N$ Anwendungen müssen in derselben Reihenfolge ausgegeben werden, in der die Anwendungen in der Eingabedatei beschrieben sind. Falls es mehrere mögliche Auswahlen der Anwendungen gibt, gib eine beliebige davon aus.

Beispiele

Eingabe 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

Ausgabe 1

Yes
2 8 2

Eingabe 2

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

Ausgabe 2

No

Hinweis

Das erste Beispiel enthält zwei Konflikte. Der erste verhindert die gleichzeitige Installation der dritten Version von vim und der achten Version von nano. Der zweite besagt, dass nur eines der folgenden Pakete installiert werden darf — die erste Version von vim, die fünfte Version von nano und die zweite Version von vim — oder gar keines. Die korrekten Lösungen sind die folgenden:

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

Im zweiten Beispiel gibt es zwei Anwendungen mit jeweils einer Version. Der einzige Konflikt verbietet jedoch, beide Anwendungen gemeinsam zu installieren.

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.