QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 64 MB Total points: 100

#14647. Uczta

统计

Król Bajtazar organizuje wielką ucztę z okazji swoich 128. urodzin. Postanowił zaproszonych gości usadzić przy okrągłych stołach tak, żeby żaden z gości nie siedział przy stole sam. Wybrał już $n$ osób, które mógłby zaprosić na przyjęcie. Następnie uszeregował gości w kolejności od najważniejszych i ponumerował ich kolejno od 1 do $n$ (gość numer 1 jest najważniejszy).

Goście są bardzo wymagający: każdy z nich podał królowi wymagania odnośnie do tego, kto może siedzieć po jego prawej stronie. Król chce, aby każdy z zaproszonych gości miał dogodne towarzystwo, toteż nie pozwoli, aby wymagania któregoś z gości nie zostały spełnione. Może się więc okazać, że nie uda się zaprosić wszystkich $n$ osób. Bajtazar poprosił Ciebie (nadwornego informatyka) o wyznaczenie najlepszego z możliwych zbiorów zaproszonych gości i przykładowego usadzenia ich przy okrągłych stołach. Król, spytany o to, co miał na myśli, mówiąc o najlepszym zbiorze gości, odpowiedział zaskakująco rzeczowo, jak na 127-letniego informatycznego laika:

Aby porównać dwa zbiory gości, wybieram osobę o najmniejszym numerze, która należy do dokładnie jednego z porównywanych zbiorów. Ta właśnie osoba należy do lepszego zbioru.

Przy tak określonym porządku można faktycznie jednoznacznie określić, który z potencjalnych zbiorów gości jest najlepszy.

Wejście

W pierwszym wierszu wejścia znajduje się liczba całkowita $n$ ($2 \le n \le 2000$) oznaczająca liczbę gości. W $i$-tym z kolejnych $n$ wierszy znajduje się opis preferencji osoby o numerze $i$. Opis preferencji rozpoczyna się od liczby całkowitej $k_i$ ($k_i \ge 0$). Po niej następuje $k_i$ parami różnych numerów osób - są to liczby całkowite z zakresu od 1 do $n$, różne od $i$. Każda taka liczba określa jedną osobę, która może usiąść po prawicy osoby numer $i$. Suma liczb $k_i$ nie przekracza 5000.

W testach wartych 50% punktów zachodzi dodatkowo warunek: jeśli osoba $a$ zezwala na posadzenie osoby $b$ po swojej prawej stronie, to również osoba $b$ zezwala na posadzenie osoby $a$ po swojej prawej stronie. W szczególności oznacza to, że te dwie osoby mogą usiąść razem przy jednym, dwuosobowym stole.

W testach wartych 20% punktów da się zaprosić wszystkie $n$ osób na przyjęcie.

Wyjście

W pierwszym wierszu wyjścia powinna znaleźć się liczba całkowita $s$, oznaczająca liczbę stołów w znalezionym rozwiązaniu. Następne $s$ wierszy powinno zawierać opisy poszczególnych stołów. Opis stołu rozpoczyna się od liczby całkowitej $g$ oznaczającej liczbę gości przy nim siedzących. Dalej następuje $g$ liczb oznaczających ich numery. Numery gości powinny być podawane kolejno, w porządku przeciwnym do kierunku ruchu wskazówek zegara. Pierwszy z wypisanych gości będzie siedział po prawej stronie ostatniego z gości.

Przykład

Dla danych wejściowych:

6
3 2 6 3
0
1 4
1 1
1 4
1 5

poprawną odpowiedzią jest:

1
3 1 3 4

W powyższym przykładzie lepiej zaprosić na ucztę osoby 1, 3 oraz 4 niż osoby 1, 4, 5 oraz 6. Zgodnie z kryterium króla lepszy zbiór wyznacza osoba o numerze 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.