ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2243. Найти девушку

Ограничение времени: 2.0 секунды
Ограничение памяти: 256 МБ
«Однажды я познакомился с девушкой в баре. Мы с ней отлично общались, она мне понравилась. Она дала мне свой номер телефона. На следующий день я захотел позвать её на свидание, однако номер оказался недействительным. Наверняка, она ошиблась, поэтому я написал программу, которая перебирает все номера с одной ошибкой и ищет, существует ли такой номер. Несколько нашлись, но когда я пробил социальные сети по этим номерам, там была не она. Не беда, наверняка она ошиблась в двух цифрах! Новая программа нашла ещё больше номеров, я пробил у каждого социальные сети и, не поверишь, одним из последних нашёл её аккаунт! Я просмотрел всю её семью, друзей и в итоге позвонил по номеру. Она ответила, что не знает, кто это...» — легендарный спортивный программист Урала.
В университете есть N кабинетов. Игнат узнал, что одна девушка, которая когда-то давно дала ему фейковый номер телефона, совсем недавно прошлась по этим кабинетам. Её точно нужно найти, чтобы уточнить неправильный номер.
Игнат опросил M одногруппников, i-й сказал, что видел, как девушка выходила из ui-го кабинета и шла прямиком в vi-й, возможно, и не один раз. Показания получились противоречивыми, поэтому каждому одногруппнику Игнат присвоил значение доверия pi. Оно означает, что если девушка в какой-либо момент оказалась в кабинете ui, то с вероятностью pi она пошла в кабинет vi, при этом девушка могла оказаться в одном и том же кабинете любое количество раз, а из некоторых она могла и не выходить, то есть она остановилась.
Заметьте, что Игнат не имеет информации про остальные переходы между кабинетами, поэтому считает, что девушка так не ходила.
Также Игнат заметил, что никакой кабинет не мог оказаться больше чем в одной последовательности циклических показаний (таких показаний, что согласно им девушка шла по кругу).
Игнат не знает, в каком кабинете начинала девушка, каждый начальный кабинет одинаково возможен. При этом девушка могла сделать сколько угодно переходов. Для каждого кабинета определите вероятность того, что девушка остановилась именно в нём.

Исходные данные

В первой строке даются два целых числа N и M — количество кабинетов в университете и количество показаний одногруппников (2 ≤ N ≤ 105, 1 ≤ M ≤ 2 · 105).
В следующих M строках описываются показания тремя целыми числами ui, vi и pi — девушка из кабинета ui выходит в кабинет vi с вероятностью pi / 105 (1 ≤ ui, vi ≤ N, ui ≠ vi, 0 ≤ pi ≤ 105).
Гарантируется, что каждая упорядоченная пара (ui; vi) встречается не больше одного раза. Гарантируется, что для любого кабинета сумма вероятностей выхода из него не больше 1.

Результат

Для каждого кабинета выведите вероятность того, что девушка в нём остановилась. Вероятности надо выводить по модулю 109 + 7, то есть, если вероятность была равна p / q, то необходимо вывести такое x, что 0 ≤ x ≤ 109 + 6 и q · x ≡ p (mod 109 + 7).

Пример

исходные данныерезультат
6 8
1 6 25000
6 3 10000
3 1 60000
6 4 40000
3 4 0
4 5 20000
5 2 100000
2 5 100000
236040611
0
543147212
545177669
0
956006775

Замечания

В примере вероятности равны 83/394, 0, 15/197, 70/591, 0, 206/985.
Автор задачи: Вадим Баринов
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2026: отбор УрФУ