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

Музей

Музей

У столиці країни Олімпія збудований Музей Олімпійської Слави, де виставлено нагороди школярів країни з різних предметних олімпіад. Будівля музею складається з виставкових залів, з’єднаних коридорами. Коридор сполучає рівно два зали. Відомо, що кожного залу музею можна дістатися з будь-якого іншого залу, прямуючи коридорами. Також відомо, що кількість коридорів дорівнює кількості залів. \includegraphics{https://static.e-olymp.com/content/a0/a098315e3bac8c16f29bf7c08e8b09a863b7dc9a.jpg} Вночі музей патрулюється охоронцями. Кількість охоронців дорівнює кількості залів, та у кожен момент часу охоронець доглядає за своїм залом. Кожну годину згідно плану патрулювання деякі з охоронців переходять в іншу залу, а інші залишаються на місті. План патрулювання відповідає таким вимогам: \begin{enumerate} \item Для кожної зали план задає чи залишиться її охоронець на місці, чи перейде до певної зали, яка сполучена з поточною коридором. \item Після переходів охоронців, у кожній залі повинен опинитися рівно один охоронець. \item Кожну годину застосовується один і той самий план патрулювання. \end{enumerate} Наприклад, на рисунку наведений один з можливих планів патрулювання. Згідно йому кожну годину охоронець, що знаходиться у залі \textbf{1}, переходить до залу \textbf{2}; охоронець з залу \textbf{2} -- до залу \textbf{3}; з залу \textbf{3} -- до залу \textbf{1}; охоронці з залів \textbf{4} та \textbf{5} міняються місцями, а охоронець з залу \textbf{6} всю ніч проводить у цьому залі. Напишіть програму, яка за інформацією про кількість залів музею і їх сполучення коридорами знайде кількість різних планів патрулювання музею за модулем \textbf{P}. \InputFile Перший рядок містить пару цілих чисел \textbf{N }(\textbf{3 }≤ \textbf{N }≤ \textbf{50000}) - кількість залів у музеї, та \textbf{P }(\textbf{2 }≤ \textbf{P }≤ \textbf{10000}). Наступні \textbf{N }рядків містять пари цілих чисел від \textbf{1 }до \textbf{N }- номери залів, що з’єднані коридором. \OutputFile Вивести одне ціле число - кількість планів патрулювання музею, за модулем \textbf{P} (остачу від ділення шуканої кількості на \textbf{P}). \textit{\textbf{Пояснення до прикладу}}: Існує 20 різних планів патрулювання: (1, 2, 3, 4, 5, 6), (1, 2, 3, 5, 4, 6), (1, 2, 3, 6, 5, 4), (1, 2, 4, 3, 5, 6), (1, 3, 2, 4, 5, 6), (1, 3, 2, 5, 4, 6), (1, 3, 2, 6, 5, 4), (2, 1, 3, 4, 5, 6), (2, 1, 3, 5, 4, 6), (2, 1, 3, 6, 5, 4), (2, 1, 4, 3, 5, 6), (2, 3, 1, 4, 5, 6), (2, 3, 1, 5, 4, 6), (2, 3, 1, 6, 5, 4), (3, 1, 2, 4, 5, 6), (3, 1, 2, 5, 4, 6), (3, 1, 2, 6, 5, 4), (3, 2, 1, 4, 5, 6), (3, 2, 1, 5, 4, 6), (3, 2, 1, 6, 5, 4). На рисунку з умови зображено план (\textbf{2}, \textbf{3}, \textbf{1}, \textbf{5}, \textbf{4}, \textbf{6}).
Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
6 1000
1 2
2 3
3 1
3 4
4 5
4 6
Вихідні дані #1
20
Автор Даніїл Нейтер
Джерело 2010 XXIII Всеукраїнська олімпіада з інформатики, Київ, Березень 22 - 26, тур 1