EduBrick

A. Сколько независимых множеств

2000 мс · 256 МБ · всё или ничего

Посчитайте количество допустимых (независимых) множеств вершин дерева по модулю 109+710^9 + 7. Пустое множество тоже считается.

Динамика та же, что в классе, но вместо максимума - произведение, а вместо суммы по детям - произведение по детям:

dp[v][0]=∏c(dp[c][0]+dp[c][1]),dp[v][1]=∏cdp[c][0]dp[v][0] = \prod_c \bigl( dp[c][0] + dp[c][1] \bigr), \qquad dp[v][1] = \prod_c dp[c][0]

Если vv не взята, каждый ребёнок независимо может быть взят или нет. Если взята - ни один ребёнок взят быть не может.

Ответ - dp[корень][0]+dp[корень][1]dp[\text{корень}][0] + dp[\text{корень}][1].

База: у листа dp[v][0]=dp[v][1]=1dp[v][0] = dp[v][1] = 1 (пустое произведение равно единице).

Проверьте себя на цепочке: у пути из nn вершин количество независимых множеств - это числа Фибоначчи. Для n=1,2,3,4n = 1, 2, 3, 4 получается 2, 3, 5, 8.

Формат ввода

В первой строке - число nn (1≤n≤1051 \le n \le 10^5).

В следующих n−1n - 1 строках - рёбра дерева.

Формат вывода

Одно число - количество независимых множеств по модулю 109+710^9 + 7.

Примеры

ввод
4
1 2
2 3
3 4
вывод
8
ввод
3
1 2
1 3
вывод
5
Войдите, чтобы отправлять решения.