Однородные поддеревья
Определим однородное дерево как дерево, в котором все узлы на одном уровне (т.е. на определённом расстоянии от корня) имеют одинаковую степень (т.е. одинаковое количество детей). Поскольку все узлы на уровне имеют одинаковое количество детей, однородное дерево можно описать как список целых чисел, где каждое число указывает количество детей на соответствующем уровне. Например, список [2 3 5 0] представляет дерево, в котором корень имеет 2 детей, каждый ребёнок корня имеет 3 детей, каждый внук имеет 5 детей, а каждый правнук не имеет детей и, следовательно, является листом.
Для этой задачи переопределим поддерево как связный подграф дерева, который включает корень дерева. Это определение немного отличается от стандартного.
Имея описание дерева, найдите все уникальные однородные поддеревья этого дерева. Например, вот дерево и все его уникальные однородные поддеревья:
Входные данные
Входные данные содержат несколько тестовых случаев. Каждый тестовый случай состоит из одного дерева, представленного в виде одной строки. Строка будет последовательностью парных открывающих и закрывающих скобок. Каждая пара скобок представляет узел, а строка между ними представляет его детей. В дереве не будет более 4000 узлов. В строке не будет пробелов или каких-либо других символов. Ввод заканчивается строкой с одной цифрой 0.
Выходные данные
Для каждого тестового случая выведите каждое уникальное однородное поддерево данного дерева в виде списка целых чисел, по одному поддереву (и, следовательно, одному списку) на строку. Печатайте один пробел между целыми числами и не оставляйте пробелов в других местах. Не печатайте пустых строк между списками или между тестовыми случаями. Печатайте списки для данного тестового случая, отсортированные по первому элементу, затем по второму, затем по третьему и так далее.