eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Вычисления Китти на дереве

Вычисления Китти на дереве

У Китти есть дерево $T$, состоящее из $n$ вершин, пронумерованных от $1$ до $n$. Ее друг Алекс дал ей $q$ множеств, каждое из которых содержит набор вершин. Китти нужно вычислить следующее выражение для каждого набора: $$ (\sum_{\{u,v\}} u \cdot v \cdot dist(u,v)) \mod (10^9 + 7) $$ где: \begin{itemize} \item $\{u, v\}$ обозначает неупорядоченную пару вершин из множества. \item $dist(u, v)$ обозначает количество ребер на уникальном (кратчайшем) пути между узлами $u$ и $v$. \end{itemize} По заданному дереву $T$ и $q$ множествам из $k$ различных вершин вычислите значение выражения для каждого набора. Значение выражения следует выводить по модулю $10^9 + 7$ для каждого теста в новой строке. \InputFile Первая строка содержит два целых числа: количество вершин $n~(1 \le n \le 2 \cdot 10^5)$ в дереве $T$ и количество запросов $q~(1 \le q \le 10^5)$. Каждая из $n - 1$ последующих строк содержит два целых числа $a$ и $b~(1 \le a, b \le n)$, описывающих неориентированное ребро между вершинами $a$ и $b$. Далее следуют $2 \cdot q$ строк. Каждый тест задается двумя строками в следующем формате: \begin{itemize} \item Первая строка содержит размер набора $k$; \item Вторая строка содержит $k$ целых чисел --- элементы множества $(1 \le k_i \le 10^5$, сумма $k_i$ по всем $q$ не превышает $2 \cdot 10^5)$. \end{itemize} \OutputFile Выведите $q$ строк, где $i$-ая строка содержит значение выражения для $i$-го запроса по модулю $10^9 + 7$.
Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
7 3
1 2
1 3
1 4
3 5
3 6
3 7
2
2 4
1
5
3
2 4 5
Выходные данные #1
16
0
106