QOJ.ac

QOJ

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

#18901. Pakiet

Statistics

Aby instalować pakiety w systemie Vinux, Vasya używa Vum, nowoczesnego menedżera pakietów.

Każdy pakiet ma kilka wersji, które można zainstalować. Jednocześnie można zainstalować tylko jedną wersję aplikacji. Konkretną wersję konkretnej aplikacji nazwijmy pakietem. Ponieważ konkretne wersje różnych aplikacji mogą być wzajemnie niezgodne, w Vum istnieją konflikty. Każdy konflikt jest zbiorem pakietów, z którego można zainstalować najwyżej jeden pakiet. Próba zainstalowania więcej niż jednego pakietu z listy konfliktu prowadzi do awarii, a Vasya tego nie chce.

Różne wersje dowolnej aplikacji mogą być w konflikcie lub nie. W jednym konflikcie może występować kilka wersji danej aplikacji, w tym wszystkie jej wersje.

Ponieważ system opisu konfliktów w Vum jest dość prymitywny, każdy pakiet może występować tylko w jednym konflikcie.

Vasya chce zainstalować $N$ różnych aplikacji bez awarii swojego Vinuksa. Musi wybrać wersje aplikacji, nie łamiąc powyższych zasad, ale wyczerpujące algorytmy rozwiązywania zależności w Vum nie radzą sobie z tym zadaniem. Vasya prosi o pomoc ze swoim menedżerem pakietów.

Wejście

Pierwszy wiersz pliku wejściowego zawiera liczbę całkowitą $N$ — liczbę aplikacji, które Vasya chce zainstalować ($1 \le N \le 200$).

Kolejne $N$ wierszy zawiera opisy aplikacji wraz z listami ich wersji. Opis aplikacji składa się z następujących pól oddzielonych spacjami:

  • nazwa aplikacji — ciąg małych liter alfabetu łacińskiego o długości od 1 do 10 znaków;
  • liczba wersji — dodatnia liczba całkowita nie większa niż $1\,000$;
  • numery wersji — dodatnie liczby całkowite podane w kolejności rosnącej.

Numery aplikacji są nie większe niż $100\,000$. Wszystkie nazwy aplikacji są różne.

Następny wiersz zawiera liczbę $K$ — liczbę konfliktów ($0 \le K \le 500$).

Kolejne $K$ wierszy opisuje konflikty. Opis konfliktu zaczyna się od dodatniej liczby całkowitej $T$ — liczby pakietów w konflikcie. Następnie podanych jest $T$ pakietów oddzielonych spacjami. Dla każdego pakietu podana jest nazwa aplikacji, a po niej numer wersji.

Gwarantuje się, że pakiety wymienione w konfliktach nigdy się nie powtarzają i że wszystkie wersje są wymienione w opisach aplikacji.

Wyjście

Jeśli nie da się zainstalować wszystkich $N$ aplikacji bez konfliktów, jedyny wiersz pliku wyjściowego musi zawierać słowo No. Jeśli się da, pierwszy wiersz musi zawierać słowo Yes, a drugi — oddzielone spacjami numery wersji, które należy w tym celu zainstalować.

Wersje $N$ aplikacji należy wypisać w tej samej kolejności, w jakiej aplikacje opisano w pliku wejściowym. Jeśli istnieje kilka możliwych sposobów wyboru aplikacji, wypisz dowolny z nich.

Przykład

Wejście 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

Wyjście 1

Yes
2 8 2

Wejście 2

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

Wyjście 2

No

Uwagi

Pierwszy przykład zawiera dwa konflikty. Pierwszy konflikt uniemożliwia jednoczesną instalację trzeciej wersji vim i ósmej wersji nano. Drugi konflikt oznacza, że można zainstalować tylko jeden z następujących pakietów — pierwszą wersję vim, piątą wersję nano i drugą wersję vim — albo nie instalować żadnego. Poprawne rozwiązania są następujące:

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

W drugim przykładzie są dwie aplikacje, każda z jedną wersją. Jednak jedyny konflikt zabrania instalowania obu aplikacji jednocześnie.

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.