10936. Експеримент


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Сьогодні Ігор отримав довгоочікуваний дозвіл на проведення експерименту щодо вивчення протікання хімічних реакцій у магнітному полі. При цьому використовуються дві установки – генератор магнітного поля та маніпулятор, що з'єднує реагенти.

Експеримент розбитий на кілька етапів, при цьому деякі з них можуть бути виконані тільки після завершення певного набору інших етапів. Щоправда відомо, що хоча один спосіб проведення експерименту існує. На кожному етапі Ігор повинен керувати рівно однією з двох установок - або генератором або маніпулятором.

Ігор дуже дорожить своїм часом, і тому хоче провести експеримент, здійснивши найменшу кількість переміщень між пультами управління установками. Допоможіть йому дізнатися, в якому порядку слід виконувати етапи, щоб цього досягти.

Формат вхідних даних

У першому рядку вводиться ціле число \(n\) – кількість етапів експерименту ( \(1 \le n \le 100\))

Наступні \(n\) рядків містять опис етапів. Пронумеруємо етапи від 1 до \(n\) в деякому довільному порядку. Тоді \(i\)-й з цих рядків описує \(i\)-й етап. Кожен етап описується послідовністю цілих чисел. Перше число дорівнює нулю, якщо на цьому етапі Ігор управляє генератором, і одиниці, якщо він управляє маніпулятором. Потім записано ціле число \(r_i\) - кількість етапів, які мають бути виконані перед виконанням даного. За ним слідують номери цих етапів - \(r_i\) різних цілих чисел в діапазоні від 1 до \(i - 1\).

Формат вихідних даних

У першому рядку виведіть мінімальну кількість переміщень, які доведеться здійснити Ігорю.

У другому рядку виведіть перестановку чисел від 1 до n – послідовність, у якій слід виконувати етапи. Якщо рішень кілька, виведіть будь-яке.

Приклад вхідних даних

3
1 0
0 0
1 2 1 2

Приклад вихідних даних

1
2 1 3

Коментарі

Ще немає коментарів.