Олимпиадный тренинг

Задача . Barn Painting


Задача

Темы:
У фермера Джона огромная ферма с \(N\) амбарами (\(1 \le N \le 10^5\)), некоторые из которых уже покрашены, а некоторые - нет. ФД хочет покрасить эти оставшиеся амбары так, чтобы все амбары были покрашены, но у него есть краски всего трёх цветов. При этом нельзя красить в один цвет амбары, между которыми есть дорожка.

Сколькими способами ФД может покрасить оставшиеся амбары?

ФОРМАТ ВВОДА (файл barnpainting.in):

Первая строка содержит два целых числа \(N\) и \(K\) (\(0 \le K \le N\)), соответственно, количество амбаров на ферме и количество амбаров, которые уже покрашены.

Каждая из следующих \(N-1\) строк содержит два целых числа \(x\) и \(y\) (\(1 \le x, y \le N, x \neq y\)), описывающих дорожку между амбарами \(x\) и \(y\).

Каждая из следующих \(K\) строк содержит два целых числа \(b\) и \(c\) (\(1 \le b \le N\), \(1 \le c \le 3\)), указывающих, что амбар \(b\) покрашен в цвет \(c\).

ФОРМАТ ВЫВОДА (файл barnpainting.out):

Вычислите количество корректных способов покрасить оставшиеся амбары по модулю \(10^9 + 7\), так, чтобы никакие два амбара соединённых дорожкой, не были одного цвета.


Примеры
Входные данныеВыходные данные
1 4 1
1 2
1 3
1 4
4 3
8

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя