Ограничение по времени: 2.000 секунд
Ограничение по памяти: 500.000 мегабайт
Одна из команд пишет новый алгоритм сборщика мусора в памяти. Этот сборщик работает с объектами, которые представляют собой дерево из n вершин, каждая из которых покрашена в белый или черный цвет. Чтобы очистить память, нужно уничтожить все вершины этого дерева. Для этого можно выполнять две операции:
Разумеется, команда хочет, чтобы их алгоритм работал как можно быстрее, поэтому им интересно узнать, какое минимальное количество операций им потребуется, чтобы очистить память.
В первый строке дано целое число n - количество вершин в графе (1 ⩽ n ⩽ 200 000). В следующей строке дана строка s длины n из символов 0 и 1. Если i-й символ строки s равен 0, то i-я вершина покрашена в белый цвет, иначе - в черный. В следующих n−1 строках дано по два целых числа ai и bi - ребра дерева (1 ⩽ ai, bi ⩽ n).
Гарантируется, что ребра образуют дерево.
Выведите одно число - минимальное количество операций, необходимое, чтобы очистить память.
input | output |
---|---|
4 1000 1 2 1 3 1 4 |
2 |
В первом тесте очистить память можно за два действия следующим образом: