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

Суфіксне дерево

Суфіксне дерево

Побудуйте суфіксне дерево для заданого рядка \textbf{s}. \InputFile Перший рядок вхідного файлу містить рядок \textbf{s} (\textbf{1} ≤ \textbf{|s|} ≤ \textbf{100000}). Рядок складається з маленьких латинських букв. \OutputFile У першому рядку вихідного файлу виведіть два натуральних числа \textbf{n} та \textbf{m}, відокремлених пропуском - число вершин та ребер у суфіксному дереві відповідно. У наступних \textbf{m} рядках виведіть описи ребер у форматі <\textbf{предок}> <\textbf{потомок}> <\textbf{l}> <\textbf{r}>. Цей запис означає, що на ребрі записано рядок \textbf{s\[l..r\]}, при цьому значення \textbf{l} повинно бути мінімально можливим. Коренем дерева повинна бути вершина з номером \textbf{1}. Вершини повинні бути пронумеровані натуральними числами, які не перевищують \textbf{n},
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
ababb
Вихідні дані #1
7 6
1 4 1 2
1 6 2 2
4 2 3 5
4 5 5 5
6 3 3 5
6 7 5 5