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

Суфіксний автомат

Суфіксний автомат

\textit{Суфіксним автоматом} для рядка \textbf{w} називається детермінований скінчений автомат \textbf{A}, який допускає мову \textbf{Suff(w)} - множину суфіксів слова \textbf{w}. Наприклад, суфіксний автомат для слова \textbf{abbab} повинен допускати у точності наступні слова: \{\textbf{abbab}, \textbf{bbab}, \textbf{bab}, \textbf{ab}, \textbf{b}, \textbf{ε}\}. Ми також вимагаємо, щоб суфіксний автомат не мав недосяжних станів, і не було станів, з яких не досяжні допустимі. Інших обмежень, наприклад, мінімальності, накладати не будемо. На рисунку показано суфіксний автомат для слова \textbf{abbab}. \includegraphics{https://static.e-olymp.com/content/98/98910a37f34c9bdcf3b6ac09dd5cb2e607516b09.jpg} За заданим \textit{скелетом} суфіксного автомата деякого слова потрібно відновити суфіксний автомат. А саме - вам задано стани, переходи, початковий стан і допустимі стании. Але помітки на ребрах видалено. Вам потрібно розставити помітки на ребрах заданого суфіксного автомата так, щоб він став суфіксним автоматом деякого слова \textbf{w}, а також знайти це слово. Для простоти будемо вважати, що розмір алфавіту нічим не обмежено, ви можете використовувати у якості символів числа від \textbf{1} до \textbf{k} (\textbf{k} ви можете вибрати самі). \InputFile Перший рядок вхідного файлу містить три цілих числа: \textbf{n}, \textbf{m} та \textbf{t} - кількість станів, кількість переходів, та кількість допустимих станів, відповідно (\textbf{2} ≤ \textbf{n} ≤ \textbf{200}, \textbf{1} ≤ \textbf{m} ≤ \textbf{1000}, \textbf{1} ≤ \textbf{t} ≤ \textbf{n}). Другий рядок містить \textbf{t} цілих чисел - номери допустимих станів (стани пронумеровано з \textbf{1}, початковий стан маєт номер \textbf{1}). Наступні \textbf{m} рядків описують переходи: кожен рядок містить два цілих числа \textbf{s_i} та \textbf{t_i} і описує переходи з \textbf{s_i} в \textbf{t_i}. \OutputFile У першому рядку вихідного файлу виведіть два цілих числа \textbf{l} та \textbf{k} - довжину слова \textbf{w} та розмір алфавіту. Використовуйте числа \{\textbf{1}, ..., \textbf{k}\} як елементи алфавіту. \textbf{k} не повинно перевищувати \textbf{m}. Другий рядок повинен містити \textbf{l} цілих чисел - слово \textbf{w}. Нарешті, третій рядок повинен містити \textbf{m} цілих чисел - мітки на переходах скелета автомата, у тому порядку, у якому вони описані у вхідному файлі. Гарантується, що відповідь завжди існує. \textbf{Примітка} \includegraphics{https://static.e-olymp.com/content/69/69303f068fb0993625d5a6bf798ec3575727e0ab.jpg}
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
7 8 4
1 3 4 7
1 2
1 3
2 4
3 5
3 6
4 5
5 6
6 7
Вихідні дані #1
5 2
1 2 2 1 2
1 2 2 2 1 2 1 2