| Kotlin Heroes: Episode 13 |
|---|
| Закончено |
Задано дерево из $$$n$$$ вершин. Изначально ни одна из вершин дерева не окрашена.
Вы можете выполнять следующую операцию: выбрать две любые вершины $$$u$$$ и $$$v$$$ (можно в том числе выбирать $$$u=v$$$) и покрасить все вершины на пути между ними (включая концы) в цвет $$$i$$$, где $$$i$$$ — номер операции, которую вы выполняете (то есть первая операция красит в цвет $$$1$$$, вторая — в цвет $$$2$$$, и так далее). Если какая-то вершина на пути уже была покрашена ранее, ее цвет меняется на новый.
Назовем раскраску дерева полной, если для каждой вершины была проведена хотя бы одна операция, окрашивающая ее.
Ваша задача — посчитать два значения:
В первой строке задано одно целое число $$$n$$$ ($$$3 \le n \le 32$$$) — количество вершин дерева.
Далее следует $$$(n-1)$$$ строк, содержащих по два целых числа $$$x_i$$$ и $$$y_i$$$ ($$$1 \le x_i, y_i \le n$$$; $$$x_i \ne y_i$$$) — концы очередного ребра дерева.
Дополнительное ограничение на входные данные: ребра задают корректное дерево из $$$n$$$ вершин.
Выведите два целых числа — минимальное количество операций и количество различных полных раскрасок, которые можно получить за минимальное количество операций. Так как второе число может быть огромным, выведите его по модулю $$$998244353$$$.
31 22 3
1 1
51 32 15 11 4
2 6
41 42 44 3
2 9
54 21 53 44 1
2 11
107 99 34 28 77 108 54 18 26 8
3 270
| Название |
|---|


