eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Изоморфные суффиксные деревья

Изоморфные суффиксные деревья

В этой задаче необходимо по заданному корневому дереву \textbf{T} определить количество различных строк, состоящих из символов '\textbf{0}' и '\textbf{1}', суффиксные деревья которых изоморфны \textbf{T}. Два корневых дерева называются изоморфными, если они состоят из одинакового количества вершин n и можно пронумеровать вершины каждого из них различными целыми числами от \textbf{1} до \textbf{n} так, что: \begin{itemize} \item корни обоих деревьев имеют одинаковые номера; \item первое дерево содержит ребро между вершинами с номерами \textbf{a} и \textbf{b} тогда и только тогда, когда второе дерево также содержит ребро между вершинами с номерами \textbf{a} и \textbf{b}. \end{itemize} В этой задаче суффиксное дерево строки \textbf{s} --- это корневое дерево, удовлетворяющее следующим условиям: \begin{enumerate} \item Каждому ребру дерева поставлена в соответствие непустая строка, состоящая из символов '\textbf{0}' и '\textbf{1}'. \item Каждому суффиксу строки \textbf{s+'$'}, кроме суффикса "\textbf{$}", соответствует ровно один лист (то есть вершина степени \textbf{1}, не совпадающая с корнем) такой, что конкатенация строк ребер на пути от корня к этому листу равна данному суффиксу. \item Степень любой вершины, не являющейся ни листом, ни корнем дерева, строго больше двух. \item Дерево имеет минимальную возможную суммарную длину строк, записанных на ребрах, среди всех деревьев, удовлетворяющих свойствам \textbf{1-3}. \end{enumerate} Например, суффиксное дерево для строки "\textbf{1100}" выглядит следующим образом: \includegraphics{https://static.e-olymp.com/content/98/981cb3144f3d6aa283b73cc58a27c8bd9d1d9ee9.jpg} Напомним, Ваша задача --- по заданному корневому дереву \textbf{T} определить количество различных строк, состоящих из символов '\textbf{0}' и '\textbf{1}', суффиксные деревья которых изоморфны \textbf{T}. \InputFile Первая строка содержит целое число \textbf{n} (\textbf{2} ≤ \textbf{n} ≤ \textbf{25}) --- количество вершин дерева. Вершины дерева пронумерованы целыми числами от \textbf{1} до \textbf{n}. Корнем дерева является вершина \textbf{с} номером \textbf{1}. В следующих \textbf{n-1} строках описываются ребра дерева. Каждая из этих строк содержит два целых числа \textbf{x_i} и \textbf{y_i} (\textbf{1} ≤ \textbf{x_i}, \textbf{y}_\{i \}≤ \textbf{n}, \textbf{x}_\{i \}≠ \textbf{y_i}) --- номера вершин, которые соединяет очередное ребро дерева. \OutputFile Первая строка должна содержать целое число \textbf{c} --- количество строк, суффиксное дерево которых изоморфно дереву, описанному во входных данных (гарантируется, что хотя бы одна такая строка существует). В следующих \textbf{c} строках должны быть выведены все искомые строки. Выводите эти строки в лексикографическом порядке.
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
7
1 2
1 4
2 6
2 3
4 5
4 7
Вихідні дані #1
6
0011
0101
0110
1001
1010
1100