Universal Cup Judging System

Universal Cup

Time Limit: 4.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓
Statistics

Дано дерево с $N$ вершинами и $N - 1$ рёбрами, где каждое ребро $i$ имеет уровень сложности $l_i$. Расстояние $d(u, v)$ между двумя вершинами $u$ и $v$ равно сумме уровней сложности вдоль единственного пути между ними в дереве. Заметим, что $d(u, v) = d(v, u)$ и $d(v, v) = 0$.

Всего есть $M$ головоломок, и для каждой головоломки $i$ требуется $k_i$ фрагментов информации, которые расположены на определённых рёбрах дерева. На одном и том же ребре может находиться сразу несколько фрагментов информации!

Для любых двух вершин $S$ и $T$ путешествие между $S$ и $T$ считается успешным, если вдоль пути из $S$ в $T$ собраны все необходимые фрагменты информации для каждой встреченной головоломки. Точнее, головоломка считается решаемой во время путешествия, если все требуемые для неё фрагменты информации встретились вдоль пути.

Задача состоит в том, чтобы вычислить сумму расстояний для всех успешных путешествий между любыми двумя вершинами $S$ и $T$ (где $1 \le S \le T \le N$) по модулю $10^9 + 7$.

Формально требуется вычислить:

$$\sum_{\substack{1 \le S \le T \le N, \\ \text{journey } (S, T) \text{ is successful}}} d(S, T)$$

Начиная из вершины $S$, вам нужно добраться до другой вершины $T$ по единственному пути в дереве. По дороге любой фрагмент информации, находящийся на рёбрах этого пути, собирается автоматически. Чтобы путешествие из $S$ в $T$ считалось успешным, оно должно удовлетворять следующему условию:

  • Пусть $O$ — множество головоломок, для которых во время путешествия был собран хотя бы один фрагмент информации. Путешествие успешно тогда и только тогда, когда собраны все фрагменты информации, необходимые для решения каждой головоломки из множества $O$. Другими словами, вы должны собрать каждый фрагмент информации, необходимый для полного решения каждой головоломки из $O$.

Входные данные

Первая строка содержит два разделённых пробелом целых числа $N$ и $M$ ($2 \le N \le 10^6, 1 \le M \le 10^6$).

Далее следуют $N - 1$ строк, каждая из которых содержит три разделённых пробелами целых числа $a_i, b_i, l_i$ ($1 \le a_i, b_i \le N, 1 \le l_i \le 10^9$), описывающих ребро $i$, соединяющее вершины $a_i$ и $b_i$ со сложностью $l_i$.

Затем следуют описания $M$ головоломок. Для каждой головоломки $i$ входные данные содержат одну строку, начинающуюся с числа $k_i$, за которым следуют $k_i$ разделённых пробелами целых чисел $u_{i_1}, u_{i_2}, \dots, u_{i_{k_i}}$ ($0 \le k_i \le K, 1 \le u_{i_j} \le N - 1$), где $u_{i_j}$ — номера рёбер, на которых расположены фрагменты информации, необходимые для решения этой головоломки.

Здесь $K$ — сумма всех значений $k_i$ по всем головоломкам, и гарантируется, что $1 \le K \le 10^6$.

Выходные данные

Выведите одну строку, содержащую одно целое число — ответ на задачу по модулю $10^9 + 7$.

Пример

Пример ввода 1

5 4
1 2 3
1 4 1
1 5 6
4 3 2
2 4 4
1 1
0
2 3 4

Пример вывода 1

17

Примечание

problem_15524_1.png

Рисунок 1. Структура дерева. Ромбами обозначены фрагменты информации, а числа на рёбрах — уровни сложности.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.