아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Защитники Асгарда

시간 제한2초메모리 제한1024 MB

요약
각 정점의 자식이 최대 7명인 루트 있는 트리에서, 자식들을 호출하는 순서를 정해 DFS 전위 순회의 번호 역전 개수가 최소가 되도록 만들고 그 순서를 출력한다.
난이도

보통10점 중 7점

유형
트리, DFS, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

До Асгарда долетела весть, что богиня смерти, Хела, вырвалась из заточения. Защитникам Асгарда нужно срочно отрепетировать боевое построение. Структура войск в Асгарде выглядит следующим образом: войско состоит из nn воинов, каждому воину присвоен уникальный номер от 11 до nn, один из воинов является военачальником, у каждого воина есть от 00 до 77 подчиненных, каждый воин, кроме военачальника, является подчиненным ровно одного другого воина, военачальник не является ни чьим подчиненным, начиная с военачальника и переходя в подчиненного, можно дойти до любого воина. Иными словами, структура войска представляет собой подвешенное дерево, каждая из вершин которого имеет не более 77 детей.

Военачальник принял решение, что всех воинов нужно выстроить в шеренгу, при этом он хочет, чтобы в этой шеренге было как можно меньше инверсий. Инверсией называется пара воинов, таких, что номер воина идущего раньше больше, чем номер воина идущего позже. Построение происходит так: построение начинает военачальник, он упорядочивает своих подчиненных некоторым образом и в таком порядке вызывает их для совершения построения, очередной воин, вызванный для совершения построения, упорядочивает своих подчиненных некоторым образом, в таком порядке вызывает их для совершения построения, каждый раз перед вызовом следующего подчиненного дожидается, пока предыдущий завершит построение, затем встает в строй сам и завершает свое построение, в конце в строй встает военачальник. Обратите внимание, что стратегия поведения военачальника не отличается от стратегии поведения всех остальных воинов.

Вам дано описание армии Асгарда, найдите минимальное количество инверсий, которое может быть в построении, и определите, в каком порядке каждый из воинов должен вызывать своих подчиненных, чтобы достичь минимального количества инверсий в построении.

입력

В первой строке даны два целых числа nn и rr --- количество воинов в войске и номер воина, являющегося военачальником (1≤n≤200,0001 \le n \le 200\\,000, 1≤r≤n1 \le r \le n).

В следующих nn строках даны описания подчиненных воинов. В ii-й из них содержится список подчиненных ii-го воина, он начинается с целого числа k_ik\_i --- количества подчиненных ii-го воина, далее следует k_ik\_i целых чисел c_ijc\_{ij} --- индексы воинов, являющихся подчиненными ii-го воина (0≤k_i≤70 \le k\_i \le 7, 1≤c_ij≤n1 \le c\_{ij} \le n).

Гарантируется, что каждый воин, кроме военачальника, появляется в списках ровно один раз, а военачальник не появляется ни в одном списке. Гарантируется, что списки задают дерево, подвешенное за вершину rr.

출력

В первой строке выведите минимальное количество инверсий, которое может получится в итоговом построении. В следующих nn строках выведите описание войска в том же формате, что и во входных данных. Список подчиненных каждого воина выводите в том порядке, в котором он должен их вызывать на построение.

Если ответов несколько, можете вывести любой.

예제2

  1. 예제 1

    입력
    4 2
    0
    3 3 1 4
    0
    0
    
    예상 출력
    2
    0
    3 1 3 4
    0
    0
    
  2. 예제 2

    입력
    7 2
    2 7 6
    3 1 5 3
    1 4
    0
    0
    0
    0
    
    예상 출력
    11
    2 6 7
    3 3 5 1
    1 4
    0
    0
    0
    0