Universal Cup Judging System

Universal Cup

Límite de tiempo: 4.0 s Límite de memoria: 256 MB Puntuación total: 100 Hackeable ✓
Estadísticas

Дано дерево з $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.