Codeforces Round 601 (Div. 1) |
---|
Закончено |
Рождество постучало в дверь, и наш главный герой, Боб, готовил захватывающий подарок для своего давнего второго лучшего друга Чарли. Поскольку ему не нравится шоколад, он решил вместо этого украсить дерево. Дерево Боба можно представить в виде неориентированного связного графа с $$$n$$$ вершинами (пронумерованными от $$$1$$$ до $$$n$$$) и $$$n-1$$$ ребрами. Первоначально Боб поместил украшение с номером $$$i$$$ на вершину $$$i$$$ для каждого $$$1 \le i \le n$$$. Однако, поскольку такая простая композиция получилась некрасивой, он решил немного переместить украшения. Формально Боб сделал следующие шаги:
После этого Боб оказался довольным такой аранжировкой и пошел спать.
На следующее утро Боб просыпается, только чтобы узнать, что его прекрасная аранжировка разрушена! Прошлой ночью младший брат Боба, Бобо, бросил некоторые украшения на пол, когда играл с деревом. К счастью, украшения не были потеряны, поэтому Боб может восстановить дерево в кратчайшие сроки. Однако он полностью забыл, как дерево выглядело вчера. Поэтому, учитывая номера украшений, которые все еще на дереве, Боб хочет узнать количество возможных конфигураций дерева. Поскольку результат может быть довольно большим, Боб будет рад, если вы сможете вывести результат по модулю $$$1000000007$$$ ($$$10^9+7$$$). Обратите внимание, что, возможно, не существует никаких возможных конфигураций.
Первая строка содержит одно целое число $$$n$$$ ($$$2 \leq n \leq 500\,000$$$) — количество вершин.
Каждая из следующих $$$n - 1$$$ строк содержит два целых числа $$$u$$$ и $$$v$$$ ($$$1 \leq u, v \leq n$$$), которые обозначают, что существует ребро между вершинами $$$u$$$ и $$$v$$$. Гарантируется, что граф — дерево.
Последняя строка содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i \le n$$$). Для каждого $$$i$$$, $$$a_i = 0$$$ значит, что украшение вершины $$$i$$$ было сброшено. Иначе $$$a_i$$$ обозначает номер украшения, что находится в вершине $$$i$$$. Гарантируется, что каждый номер встречается не более одного раза.
Выведите количество конфигураций по модулю $$$1000000007$$$ ($$$10^9+7$$$).
4 3 4 2 4 4 1 0 4 0 0
2
5 1 2 2 4 3 4 5 4 0 0 0 0 0
12
3 1 2 1 3 1 0 0
0
В первом примере возможными конфигурациями дерева являются $$$[2, 4, 1, 3]$$$ и $$$[3, 4, 2, 1]$$$.
Во втором примере обратите внимание, что есть $$$4! = 24$$$ возможных перестановок ребер, но возможны только $$$12$$$ различные финальные конфигурации.
В третьем примере легко увидеть, что украшение с номером $$$1$$$ не может оставаться в вершине $$$1$$$ после перестановок.
Название |
---|