Алгоритм BFS определяется следующим образом.
Так как порядок обхода соседей в каждой вершине не является фиксированным, то для данного графа BFS может вывести несколько различных последовательностей.
В данной задаче вам нужно проверить, может ли данная последовательность соответствовать какому-то запуску BFS на заданном дереве, начиная с вершины $$$1$$$. Деревом называется неориентированный граф, в котором между каждой парой вершин есть ровно один простой путь.
Первая строка содержит одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$), обозначающее количество вершин в дереве.
Следующие $$$n - 1$$$ строк задают рёбра дерева. Каждая из них содержит два целых числа $$$x$$$ и $$$y$$$ ($$$1 \le x, y \le n$$$) — концы соответствующего ребра дерева. Гарантируется, что заданный граф является деревом.
Последняя строка содержит $$$n$$$ различных целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \le a_i \le n$$$) — последовательность, которую вам нужно проверить.
Выведите «Yes» (без кавычек), если порядок вершин соответствует какому-то корректному BFS на данном дереве, и «No» (без кавычек) иначе.
Вы можете выводить каждую из букв в любом регистре (строчную или заглавную).
4
1 2
1 3
2 4
1 2 3 4
Yes
4
1 2
1 3
2 4
1 2 4 3
No
Оба теста из примеров содержат одинаковое дерево.
Для этого дерева существует два возможных порядка вершин, соответствующих какому-то запуску BFS.
Порядок вершин $$$1, 2, 4, 3$$$ не может получится в результате BFS.
Название |
---|